【发布时间】:2011-05-16 09:08:56
【问题描述】:
我正在寻找一种“追溯”调试 python 异常的方法。本质上,如果我的程序引发了未处理的异常,我希望它保存程序状态,以便稍后返回并调试问题。
我查看了 pdb 文档,您似乎可以这样做,但前提是您可以在异常点与程序进行交互。这对我不起作用,因为程序将在后台运行(没有控制终端)。
我的第一个(注定失败!)方法是在我的程序的最高级别放置一个 try/except 块,并在 except 块中从当前异常中提取回溯对象并使用 pickle 将其写入磁盘。然后我计划编写一个单独的程序来解开对象并使用 pdb.post_mortem 来调试崩溃的程序。但是回溯对象不是可腌制的,但我不希望它能够正常工作,因为它不会保存整个程序状态。
【问题讨论】:
-
这并不能以任何方式解决您的问题,但与其将整个程序包装在
try语句中,不如通过将其分配给sys.excepthook来为未捕获的异常设置处理程序可能会更好.