Added a method "format_stack_entry" to be used by derived classes.
Forget about the temp file.
diff --git a/Lib/bdb.py b/Lib/bdb.py
index 693387b..dfc41d9 100644
--- a/Lib/bdb.py
+++ b/Lib/bdb.py
@@ -6,7 +6,6 @@
 # and 'wdb', a window-oriented debugger.
 # And of course... you can roll your own!
 
-
 import sys
 
 BdbQuit = 'bdb.BdbQuit' # Exception to give up completely
@@ -217,12 +216,32 @@
 			t = t.tb_next
 		return stack, i
 	
+	# 
+	
+	def format_stack_entry(self, (frame, lineno)):
+		import codehack, linecache, repr, string
+		filename = frame.f_code.co_filename
+		s = filename + '(' + `lineno` + ')'
+		s = s + codehack.getcodename(frame.f_code)
+		if frame.f_locals.has_key('__args__'):
+			args = frame.f_locals['__args__']
+			if args is not None:
+				s = s + repr.repr(args)
+		if frame.f_locals.has_key('__return__'):
+			rv = frame.f_locals['__return__']
+			s = s + '->'
+			s = s + repr.repr(rv)
+		line = linecache.getline(filename, lineno)
+		if line: s = s + ': ' + string.strip(line)
+		return s
+	
 	# The following two functions can be called by clients to use
 	# a debugger to debug a statement, given as a string.
 	
 	def run(self, cmd):
-		modname = self.writetempfile(cmd)
-		self.runctx('import ' + modname + '\n', {}, {})
+		import __main__
+		dict = __main__.__dict__
+		self.runctx(cmd, dict, dict)
 	
 	def runctx(self, cmd, globals, locals):
 		self.reset()
@@ -237,18 +256,6 @@
 			del sys.trace
 		# XXX What to do if the command finishes normally?
 
-	def writetempfile(self, cmd):
-		import os
-		modname = 'bdb' + `os.getpid()`
-		filename = '/tmp/' + modname + '.py'
-		f = open(filename, 'w')
-		f.write(cmd + '\n')
-		f.close()
-		import sys
-		if sys.modules.has_key(modname): del sys.modules[modname]
-		if '/tmp' not in sys.path: sys.path.insert(0, '/tmp')
-		return modname
-
 
 # -------------------- testing --------------------