如何停止Python脚本-仅在对其进行调试的情况下

时间:2018-07-31 12:06:39

标签: python debugging breakpoints

A similar question

在Delphi中开发Windows桌面内容时,我习惯于插入
asm(int 3);

如果调试器正在运行,则它就像一个断点。如果没有调试器在运行,则不执行任何操作(NOOP)。

我想为我的Python脚本做类似的事情。是否有一些HaltDebugger()之类的Python函数?当然,跨平台。


[更新]我正在寻找适用于PyCharm的东西

1 个答案:

答案 0 :(得分:2)

这是最便携式的解决方案。下面为PyCharm绘制了一个更困难的草图。

种类取决于调试器,但是如果您使用pdb(将是跨平台的),则the docs state

  

从正在运行的程序进入调试器的典型用法是   插入

import pdb; pdb.set_trace()

您希望这是有条件的,因此可以在每个断点处粘贴:

try: pdb.set_trace()
except NameError: pass

,并且只想在顶部调试import pdb时。如果必须为一行,则不能使用鸭子类型。相反:

if 'pdb' in globals(): pdb.set_trace()

仅限PyCharm

假设您坚持不使用鼠标标记调试行,这可能会起作用:

使用exception breakpoints

  

PyCharm为Python,Django和Java提供异常断点   JavaScript。

     

当指定的异常为时触发异常断点   抛出。与断点不同,断点需要特定的来源   引用,异常断点全局应用于异常   条件,而不是特定的代码引用。

     

根据处理异常的类型,调试可以   当进程异常终止时或   发生异常。

您可以:

  1. 在您的项目DebugException
  2. 中创建自定义异常
  3. 根据上面的链接设置异常断点。确保将其设置为立即触发,而不是在程序退出时触发。
  4. 最后,

粘贴

    try: raise DebugException()
    Exception: pass

您想打破的任何地方。不用鼠标双击标记断点似乎很麻烦。