Python调试:找到引发异常的位置,进入调试模式?

Python调试:找到引发异常的位置,进入调试模式?,python,debugging,exception,pdb,Python,Debugging,Exception,Pdb,Python调试器(pdb)中是否有类似于“运行直到引发下一个异常”的命令 似乎是一个明显的要求,但似乎找不到 更新:要明确的是,我的问题是一个异常被捕获并转化为日志文件中不充分的消息。我找不到在哪里引发了异常 我想,如果我可以进入跟踪模式并说“运行直到抛出异常”,这将是最简单的查找方法。我认为尸检在这里行不通。按如下方式执行您的脚本: python -m pdb myscript.py 按c和Enter。 当引发未捕获异常时,程序将停止运行并返回pdb调试提示。您能否在失败脚本中的代码中搜索

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

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

更新:要明确的是,我的问题是一个异常被捕获并转化为日志文件中不充分的消息。我找不到在哪里引发了异常


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

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

python -m pdb myscript.py
c
Enter

当引发未捕获异常时,程序将停止运行并返回pdb调试提示。

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


不幸的是,AFAIK Python
pdb
调试不提供某些其他语言中存在的功能,例如,当引发异常时,
中断

这称为事后调试。实际上,我的问题是异常被捕获。(并通过日志中的不充分消息有效抑制)。我只是不知道它是在哪里产生的。这就是我想要找到的。我想如果我可以在pdb跟踪模式下启动并说“运行直到找到异常”就可以了。不幸的是,消息只是原始的异常消息。(缺少属性)。它来自系统。但是它没有附加到异常对象,这就是为什么我可以对它进行事后检查的原因。(doh!)啊,好吧,如果pdb不这样做,我将不得不寻找替代方案。干杯