我正在尝试调试一个Python程序,并且在函数中插入了一个经典的'import pdb; pdb.set_trace()'行,就在生成堆栈跟踪的调用之前。然而,这个调用似乎被忽略,即没有任何反应,我没有得到一个pdb提示符。什么会导致pdb.set_trace()被忽略?
在程序的那一点,只有一个活动线程。没有检测到pdb模块的猴子修补程序。
欢迎任何有关可能导致set_trace调用被忽略的帮助。谢谢。
平台信息:Debian的挤压+蟒蛇2.6.5
代码片段:
import threading
print threading.active_count()
import pdb
print pdb
pdb.set_trace()
print "*****"
root_resource.init_publisher() # before changing uid
输出:
<lots of stuff>
1
<module 'pdb' from '/usr/lib/python2.6/pdb.pyc'>
*****
<stack trace in init_publisher>
你能提供代码来重现吗?从那里打印电话工作?你尝试过'pdb.pm()'吗? (http://docs.python.org/library/pdb.html#pdb.pm) – katrielalex 2010-08-12 10:16:55
不幸的是我无法轻松地重现(否则我现在可能已经钉住了它)。打印作品,pdb.pm()失败,因为我没有堆栈跟踪在这一点上(和例外后被一些C扩展名吃掉,所以我不能轻易使用pm()和python -i – 2010-08-12 10:22:58