【问题标题】:Python Debugging : Find where an exception is raised, go into debug mode?Python 调试:查找引发异常的位置,进入调试模式?
【发布时间】:2013-07-28 15:35:16
【问题描述】:

Python 调试器 (pdb) 中是否有类似“运行直到引发下一个异常”的命令?

似乎是一个明显的要求,但似乎找不到。

更新:明确地说,我的问题是一个异常,它被捕获并变成日志文件中的不充分消息。而且我找不到引发异常的位置。

我想如果我可以进入跟踪模式并说“运行直到抛出异常”,那将是找到它的最直接方法。我认为验尸在这里行不通。

【问题讨论】:

  • 这称为事后调试。

标签: python debugging exception pdb


【解决方案1】:

您能否在失败脚本中的代码中搜索记录的消息文本(我意识到如果字符串以复杂的方式生成,这可能会很困难)。如果您可以找到生成/记录消息的点,那么您可以设置适当的断点来解决问题。

不幸的是,AFAIK Python pdb 调试不提供某些其他语言中存在的功能,例如 break when Exception is raised

【讨论】:

  • 不幸的是,该消息只是原始异常消息。 (缺少的属性)。它来自系统。但它没有附加到 Exception 对象,这就是为什么我可以对其进行事后分析的原因。 (doh!)嗯,如果 pdb 不这样做,我将不得不寻找替代方案。干杯。
【解决方案2】:

按如下方式执行您的脚本:

python -m pdb myscript.py

cEnter。 当引发未捕获的异常时,您的程序将停止运行并退回到 pdb 调试提示符。

【讨论】:

  • 其实我的问题是异常被捕获。 (并且有效地抑制了日志中不充分的消息)。我只是不知道它是在哪里生成的。这就是我试图找到的。我想如果我可以在 pdb 跟踪模式下启动并说“运行直到发现异常”就可以了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-15
  • 2012-04-28
  • 1970-01-01
  • 2014-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多