]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Added post_mortem() and pm() interfaces to pdb and wdb.
authorGuido van Rossum <guido@python.org>
Tue, 8 Sep 1992 11:59:04 +0000 (11:59 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 8 Sep 1992 11:59:04 +0000 (11:59 +0000)
Added colorsys.py (color system conversions).
SV.py: new version for new svideo.h (Sjoerd).
DEVICE.py: added VIDEO event type.

Lib/irix5/DEVICE.py
Lib/lib-stdwin/wdb.py
Lib/pdb.doc
Lib/pdb.py
Lib/plat-irix5/DEVICE.py
Lib/stdwin/wdb.py

index 2c20485aa42be1f70108659b271fbff52c81d163..7ace8cb0b6c103e95fd8163dd01271f501059ea5 100755 (executable)
@@ -385,6 +385,7 @@ WINQUIT = 542
 DEPTHCHANGE = 543
 WINSHUT = 546
 DRAWOVERLAY = 547
+VIDEO = 548
 MENUBUTTON = RIGHTMOUSE
 WINCLOSE = 537
 KEYBDFNAMES = 544
index b3d6b737601dce8c186fb789f94f2ed90e52855a..c499296c8a01c383a7743c6b02bc4a4aa3e9d74c 100644 (file)
@@ -2,8 +2,6 @@
 
 # XXX To do:
 # - don't fall out of bottom frame
-# - is the /tmp file hack really needed?
-# - also use it for post-mortem debugging
 
 
 import stdwin
@@ -273,6 +271,8 @@ class Wdb(bdb.Bdb, basewin.BaseWindow): # Window debugger
                        d.close()
 
 
+# Simplified interface
+
 def run(statement):
        x = Wdb().init()
        try: x.run(statement)
@@ -288,6 +288,21 @@ def runcall(*args):
        try: apply(Pdb().init().runcall, args)
        finally: x.close()
 
+
+# Post-Mortem interface
+
+def post_mortem(traceback):
+       p = Pdb().init()
+       p.reset()
+       p.interaction(None, traceback)
+
+def pm():
+       import sys
+       post_mortem(sys.last_traceback)
+
+
+# Main program for testing
+
 TESTCMD = 'import x; x.main()'
 
 def test():
index 0ae4c0e2e8ebf8f30e341d5bd913282333e79b10..c92b57229d7e693cba705a91bb0758517faa54af 100644 (file)
@@ -9,6 +9,15 @@ To use the debugger in its simplest form:
 The debugger's prompt is '(Pdb) '.  This will stop in the first
 function call in <a statement>.
 
+Alternatively, if a statement terminated with an unhandled exception,
+you can use pdb's post-mortem facility to inspect the contents of the
+traceback:
+
+       >>> <a statement>
+       <exception traceback>
+       >>> import pdb
+       >>> pdb.pm()
+
 The commands recognized by the debugger are listed in the next
 section.  Most can be abbreviated as indicated; e.g., h(elp) means
 that 'help' can be typed as 'h' or 'help' (but not as 'he' or 'hel',
index f564f642b3bf5ed4e1f317923eabe73458bd493f..94dcd797a61eb9140b6a944ca2896cf868cde07f 100755 (executable)
@@ -248,6 +248,8 @@ class Pdb(bdb.Bdb, cmd.Cmd):
                print self.format_stack_entry(frame_lineno)
 
 
+# Simplified interface
+
 def run(statement):
        Pdb().init().run(statement)
 
@@ -257,6 +259,22 @@ def runctx(statement, globals, locals):
 def runcall(*args):
        apply(Pdb().init().runcall, args)
 
+
+# Post-Mortem interface
+
+def post_mortem(t):
+       p = Pdb().init()
+       p.reset()
+       while t.tb_next <> None: t = t.tb_next
+       p.interaction(t.tb_frame, t)
+
+def pm():
+       import sys
+       post_mortem(sys.last_traceback)
+
+
+# Main program for testing
+
 TESTCMD = 'import x; x.main()'
 
 def test():
index 2c20485aa42be1f70108659b271fbff52c81d163..7ace8cb0b6c103e95fd8163dd01271f501059ea5 100755 (executable)
@@ -385,6 +385,7 @@ WINQUIT = 542
 DEPTHCHANGE = 543
 WINSHUT = 546
 DRAWOVERLAY = 547
+VIDEO = 548
 MENUBUTTON = RIGHTMOUSE
 WINCLOSE = 537
 KEYBDFNAMES = 544
index b3d6b737601dce8c186fb789f94f2ed90e52855a..c499296c8a01c383a7743c6b02bc4a4aa3e9d74c 100755 (executable)
@@ -2,8 +2,6 @@
 
 # XXX To do:
 # - don't fall out of bottom frame
-# - is the /tmp file hack really needed?
-# - also use it for post-mortem debugging
 
 
 import stdwin
@@ -273,6 +271,8 @@ class Wdb(bdb.Bdb, basewin.BaseWindow): # Window debugger
                        d.close()
 
 
+# Simplified interface
+
 def run(statement):
        x = Wdb().init()
        try: x.run(statement)
@@ -288,6 +288,21 @@ def runcall(*args):
        try: apply(Pdb().init().runcall, args)
        finally: x.close()
 
+
+# Post-Mortem interface
+
+def post_mortem(traceback):
+       p = Pdb().init()
+       p.reset()
+       p.interaction(None, traceback)
+
+def pm():
+       import sys
+       post_mortem(sys.last_traceback)
+
+
+# Main program for testing
+
 TESTCMD = 'import x; x.main()'
 
 def test():