2013-07-28 30 views
1

在Python調試器(pdb)中是否存在一個類似「運行直到引發下一個異常?」的命令?Python調試:找到引發異常的位置,進入調試模式?

似乎是一個明顯的要求,但似乎無法找到它。

更新:很明顯,我的問題是其被抓,變成了在日誌文件中的不足消息的異常。而且我找不到異常情況。

我想,如果我能進入跟蹤模式,並說「運行,直到拋出一個異常」這將是找到它的最直接的方法。我不認爲驗屍會在這裏工作。

+0

這被稱爲Post Mortem調試。 –

回答

0

執行腳本如下:

python -m pdb myscript.py 

cEnter。 當發生未捕獲的異常時,程序將停止運行並回退到pdb調試提示符。

+1

其實我的問題是異常被捕獲。 (並且在日誌中消息不足的情況下被有效抑制)。我只是不知道它在哪裏產生。這正是我想要找到的。我認爲如果我能以pdb跟蹤模式開始並且說「運行直到你找到一個異常」,那就可以做到這一點。 – interstar

0

你可以搜索代碼失敗的腳本,這是記錄消息的文本(我認識到,如果以複雜的方式生成的字符串,這可能是困難的)。如果您可以找到消息生成/記錄的位置,那麼您可以設置適當的中斷點來解決問題。

不幸的是,AFAIK Python pdb調試不提供某些其他語言中存在的功能,例如break when Exception is raised

+1

不幸的是,這條消息只是原來的異常消息。 (缺少一個屬性)。它來自系統。但它沒有附加到一個Exception對象,這就是爲什麼我可以對它進行事後驗證。 (doh!) 好吧,如果pdb不這樣做,我將不得不尋找替代品。乾杯。 – interstar