【发布时间】:2011-03-28 20:23:43
【问题描述】:
我正在尝试调试 Python 程序,我在函数中插入了经典的“import pdb;pdb.set_trace()”行,就在生成堆栈跟踪的调用之前。但是,该调用似乎被忽略了,即没有任何反应,而且我没有得到 pdb 提示。
在程序的那个时刻,只有一个活动线程。没有检测到 pdb 模块的猴子补丁。
欢迎任何有关可能导致 set_trace 调用被忽略的帮助。谢谢。
平台信息:Debian 挤压 + python 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>
【问题讨论】:
-
你能提供代码来重现这个吗?
print电话从那里工作吗?你试过pdb.pm()吗? (docs.python.org/library/pdb.html#pdb.pm) -
不幸的是,我无法轻松地重现这一点(否则我现在可能已经搞定了)。打印工作,pdb.pm() 失败,因为我当时没有堆栈跟踪(并且异常后来被一些 C 扩展吃掉,所以我不能轻易使用 pm() 和 python -i