簡體   English   中英

如何停止Python腳本-僅在進行調試時

[英]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提供了異常斷點。

拋出指定的異常時會觸發異常斷點。 與需要特定源引用的行斷點不同,異常斷點全局應用於異常條件,而不是特定的代碼引用。

根據處理異常的類型,調試可能在進程異常終止或異常發生時中斷。

你可以:

  1. 在項目中創建自定義異常DebugException
  2. 根據上面的鏈接設置異常斷點。 確保將其設置為立即觸發,而不是在程序退出時觸發。
  3. 最后,

    try: raise DebugException()
    Exception: pass

無論您想在哪里休息。 不使用鼠標雙擊標記斷點似乎很麻煩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM