2013-02-08 66 views

回答

3

您可能需要ipython -i yourscript.py,它將在解釋器環境中執行腳本。但是這不會讓你檢查發生異常的本地環境,例如函數中的局部變量 - 你只能檢查全局變量。你可能想這個:

In [1]: %run test.py 
<exception occurs> 
In [2]: %debug test.py 

如果你不熟悉使用PDB,請some docs第一。

編輯感謝托馬斯K

+1

或者,當你運行一個程序並引發錯誤時,只需調用'%debug'跳轉到調試器。同樣的效果,但你不需要提前計劃。 – 2013-02-08 18:55:30

+1

哇,太棒了! – Thomas 2013-02-08 22:52:48

0

是的,這取決於你如何設置。你可以導入你的程序並像其他模塊一樣在try塊內運行。

import yourprogram 
try: 
    yourprogram.main_function(args) 
except: 
    print "we blew up, investigate why" 

如果您的程序不在函數中,您可能需要將try塊放在導入區域。

這種方法的問題是您想要查看的變量可能不再在範圍內。我通常在不同的地方使用打印語句或日誌消息來找出看起來不像我期待的東西。

+0

如果您採用這種方法,至少應打印出異常和堆棧跟蹤 - 這些通常比「我們炸燬」更有用。 – Thomas 2013-02-08 22:52:12