[Stackless] pdb support (baseframe.f_trace)?

Bob Ippolito bob at redivi.com
Mon Feb 2 00:49:05 CET 2004


On Jan 29, 2004, at 11:41 PM, Tom Locke wrote:

> Chris - I desperately need the ability to use pdb.set_trace. Any idea
> how hard it would be to get this working? I'd be happy to help out if I
> can, but I'm not at all up to speed on the innards.
>
> Maybe there's a rough hack to get this working until a proper solution
> is found?

Tom,

(warning: rough hack ahead)
try patching your bdb.py so that instead of "while frame" it uses 
"while isinstance(frame, stackless.frame)" .. the problem is that it's 
trying to assign attributes to a baseframe or cframe, which raises.

Something like this (I haven't tried to actually use this, but it does 
let me set_trace() and then bt looks correct):

[meth:stackless/Stackless/test_pdb] bob% diff -u ../../Lib/bdb.py bdb.py
--- ../../Lib/bdb.py    Mon Jan 26 03:18:58 2004
+++ bdb.py      Sun Feb  1 18:40:06 2004
@@ -3,6 +3,7 @@
  import sys
  import os
  import types
+import stackless

  __all__ = ["BdbQuit","Bdb","Breakpoint"]

@@ -171,7 +172,7 @@
          """Start debugging from here."""
          frame = sys._getframe().f_back
          self.reset()
-        while frame:
+        while isinstance(frame, stackless.frame):
              frame.f_trace = self.trace_dispatch
              self.botframe = frame
              frame = frame.f_back
@@ -187,7 +188,7 @@
              # no breakpoints; run without debugger overhead
              sys.settrace(None)
              frame = sys._getframe().f_back
-            while frame and frame is not self.botframe:
+            while isinstance(frame, stackless.frame) and frame is not 
self.botframe:
                  del frame.f_trace
                  frame = frame.f_back


_______________________________________________
Stackless mailing list
Stackless at stackless.com
http://www.stackless.com/mailman/listinfo/stackless



More information about the Stackless mailing list