]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Added a method "format_stack_entry" to be used by derived classes.
authorGuido van Rossum <guido@python.org>
Mon, 27 Jan 1992 16:59:34 +0000 (16:59 +0000)
committerGuido van Rossum <guido@python.org>
Mon, 27 Jan 1992 16:59:34 +0000 (16:59 +0000)
Forget about the temp file.

Lib/bdb.py

index 693387bbe08ac46ec5d72c4e6dd606d7779a0d69..dfc41d910500b1bef0c94bccd5e979382caf3897 100644 (file)
@@ -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 @@ class Bdb: # Basic Debugger
                        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 @@ class Bdb: # Basic Debugger
                        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 --------------------