summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xLib/irix5/DEVICE.py1
-rw-r--r--Lib/lib-stdwin/wdb.py19
-rw-r--r--Lib/pdb.doc9
-rwxr-xr-xLib/pdb.py18
-rwxr-xr-xLib/plat-irix5/DEVICE.py1
-rwxr-xr-xLib/stdwin/wdb.py19
6 files changed, 63 insertions, 4 deletions
diff --git a/Lib/irix5/DEVICE.py b/Lib/irix5/DEVICE.py
index 2c20485..7ace8cb 100755
--- a/Lib/irix5/DEVICE.py
+++ b/Lib/irix5/DEVICE.py
@@ -385,6 +385,7 @@ WINQUIT = 542
DEPTHCHANGE = 543
WINSHUT = 546
DRAWOVERLAY = 547
+VIDEO = 548
MENUBUTTON = RIGHTMOUSE
WINCLOSE = 537
KEYBDFNAMES = 544
diff --git a/Lib/lib-stdwin/wdb.py b/Lib/lib-stdwin/wdb.py
index b3d6b73..c499296 100644
--- a/Lib/lib-stdwin/wdb.py
+++ b/Lib/lib-stdwin/wdb.py
@@ -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():
diff --git a/Lib/pdb.doc b/Lib/pdb.doc
index 0ae4c0e..c92b572 100644
--- a/Lib/pdb.doc
+++ b/Lib/pdb.doc
@@ -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',
diff --git a/Lib/pdb.py b/Lib/pdb.py
index f564f64..94dcd79 100755
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -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():
diff --git a/Lib/plat-irix5/DEVICE.py b/Lib/plat-irix5/DEVICE.py
index 2c20485..7ace8cb 100755
--- a/Lib/plat-irix5/DEVICE.py
+++ b/Lib/plat-irix5/DEVICE.py
@@ -385,6 +385,7 @@ WINQUIT = 542
DEPTHCHANGE = 543
WINSHUT = 546
DRAWOVERLAY = 547
+VIDEO = 548
MENUBUTTON = RIGHTMOUSE
WINCLOSE = 537
KEYBDFNAMES = 544
diff --git a/Lib/stdwin/wdb.py b/Lib/stdwin/wdb.py
index b3d6b73..c499296 100755
--- a/Lib/stdwin/wdb.py
+++ b/Lib/stdwin/wdb.py
@@ -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():