![](/img/trans.png)
[英]How can I tell a Python script to halt for debugger attach to process?
[英]How to halt a Python script - only if it is being debugged
在Delphi中開發Windows桌面內容時,我習慣於插入
asm(int 3);
。
如果調試器正在運行,則它就像一個斷點。 如果沒有調試器在運行,則不執行任何操作( NOOP
)。
我想為我的Python腳本做類似的事情。 是否有一些類似HaltDebugger()
Python函數? 當然是跨平台的。
[更新]我正在尋找適用於PyCharm的產品
這是最便攜式的解決方案。 下面為PyCharm繪制了一個更困難的草圖。
種取決於調試器,但是如果使用pdb
(將是跨平台的), 則docs指出 :
從正在運行的程序進入調試器的典型用法是插入
import pdb; pdb.set_trace()
您希望這是有條件的,因此可以在每個斷點處粘貼:
try: pdb.set_trace()
except NameError: pass
而當您要調試時,只需在頂部import pdb
。 如果必須為一行,則不能使用鴨子類型。 代替:
if 'pdb' in globals(): pdb.set_trace()
僅PyCharm
假設您堅持不使用鼠標標記調試行,則可能可行:
使用異常斷點 :
PyCharm為Python,Django和JavaScript提供了異常斷點。
拋出指定的異常時會觸發異常斷點。 與需要特定源引用的行斷點不同,異常斷點全局應用於異常條件,而不是特定的代碼引用。
根據處理異常的類型,調試可能在進程異常終止或異常發生時中斷。
你可以:
DebugException
糊
try: raise DebugException()
Exception: pass
無論您想在哪里休息。 不使用鼠標雙擊標記斷點似乎很麻煩。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.