我正在嘗試調試一個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