diff options
-rw-r--r-- | Lib/bdb.py | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/Lib/bdb.py b/Lib/bdb.py index 36b0f187a1..693387bbe0 100644 --- a/Lib/bdb.py +++ b/Lib/bdb.py @@ -6,6 +6,7 @@ # and 'wdb', a window-oriented debugger. # And of course... you can roll your own! + import sys BdbQuit = 'bdb.BdbQuit' # Exception to give up completely @@ -220,9 +221,8 @@ class Bdb: # Basic Debugger # a debugger to debug a statement, given as a string. def run(self, cmd): - import __main__ - dict = __main__.__dict__ - self.runctx(cmd, dict, dict) + modname = self.writetempfile(cmd) + self.runctx('import ' + modname + '\n', {}, {}) def runctx(self, cmd, globals, locals): self.reset() @@ -237,6 +237,18 @@ 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 -------------------- |