[Neo-report] r2724 jm - /trunk/neo/lib/debug.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Apr 20 20:20:50 CEST 2011
Author: jm
Date: Wed Apr 20 20:20:50 2011
New Revision: 2724
Log:
debug: extract winpdb code from pdbHandler to a reusable function for tests
Modified:
trunk/neo/lib/debug.py
Modified: trunk/neo/lib/debug.py
==============================================================================
--- trunk/neo/lib/debug.py [iso-8859-1] (original)
+++ trunk/neo/lib/debug.py [iso-8859-1] Wed Apr 20 20:20:50 2011
@@ -20,6 +20,7 @@ import signal
import ctypes
import imp
import os
+import sys
from functools import wraps
import neo
@@ -73,25 +74,17 @@ def getPdb():
_debugger = None
- at decorate
-def pdbHandler(sig, frame):
- try:
- import rpdb2
- except ImportError:
- global _debugger
- if _debugger is None:
- _debugger = getPdb()
- return debugger.set_trace(frame)
- # WKRD: rpdb2 take an integer (depth) instead of a frame as parameter,
- # so we must hardcode the value, taking the decorator into account
+def winpdb(depth=0):
+ import rpdb2
+ depth += 1
if rpdb2.g_debugger is not None:
- return rpdb2.setbreak(2)
- script = rpdb2.calc_frame_path(frame)
- pwd = os.getcwd().replace('/', '_').replace('-', '_')
+ return rpdb2.setbreak(depth)
+ script = rpdb2.calc_frame_path(sys._getframe(depth))
+ pwd = str(os.getpid()) + os.getcwd().replace('/', '_').replace('-', '_')
pid = os.fork()
if pid:
try:
- rpdb2.start_embedded_debugger(pwd, depth=2)
+ rpdb2.start_embedded_debugger(pwd, depth=depth)
finally:
os.waitpid(pid, 0)
else:
@@ -107,6 +100,16 @@ def pdbHandler(sig, frame):
finally:
os.abort()
+ at decorate
+def pdbHandler(sig, frame):
+ try:
+ winpdb(2) # depth is 2, because of the decorator
+ except ImportError:
+ global _debugger
+ if _debugger is None:
+ _debugger = getPdb()
+ debugger.set_trace(frame)
+
def register(on_log=None):
if ENABLED:
signal.signal(signal.SIGUSR1, debugHandler)
More information about the Neo-report
mailing list