2017-08-15 141 views
-1

我在這個主題上看到了幾個答案 - 其中一些現在(使用Python 3.6)已經過時 - 而且我還沒有更清楚地知道如何做到這一點。On Error Goto in Python

我希望能夠運行一個腳本,如果遇到錯誤,它會跳轉到它暫停的位置,我可以測試任何局部變量的值以查看可能的錯誤。

在其他語言(例如VBA)中,我可以在錯誤轉到ErrorHandler上,然後在錯誤處理程序中放置一個斷點,打印出它的錯誤描述和行號,然後使用Locals或Immediate窗口看看我的變量在這一點上有什麼價值。

我不想要大量的try/except語句,也不希望每次都以調試模式運行它。

有沒有簡單的Pythonesque方式讓它暫停,而我看看問題?

+2

'try-except'? https://docs.python.org/3.6/tutorial/errors.html – DeepSpace

+0

如前所述,這是關於意料之外的錯誤。我希望它在遇到任何錯誤時暫停。 – KantarChris

回答

0

你會發現pdb模塊有用。

模塊pdb定義爲Python 節目的交互式源代碼調試器。它支持設置(有條件的)斷點和單個源碼行級別,棧幀檢查,源碼 代碼列表,以及任意棧幀的上下文 中的任意Python代碼評估。它也支持驗屍調試,並且可以在程序控制下調用 。

pdb對於設置斷點和驗屍調試很有用。我相信這就是你要找的。

再次,從文檔:

的典型用法闖入從正在運行的程序調試器是 的位置插入

import pdb; pdb.set_trace() 

要打入 調試。然後,您可以按照以下語句跳過代碼 ,然後在沒有調試器的情況下使用continue命令繼續運行。

+0

我已經看到了。也許我沒有正確使用它,但似乎我必須改變這個程序才能讓它在正確的位置斷開。 – KantarChris

+0

@KantarChris是的。您必須使用'pdb.set_trace()'添加一個斷點。 –

+0

@KantarChris你知道嗎?您還可以使用交互式標誌運行腳本,如下所示:python -i script.py。腳本完成或發生錯誤後,將調用解釋器進行調試。請注意,您只能看到全局範圍內的數據。 –