【发布时间】:2012-08-03 12:39:16
【问题描述】:
我有一个脚本(看似)不可预测地崩溃了。我不知道如何重现它。
Python是否保留了一个全局系统日志文件,所以我可以回去看看是什么异常导致了退出?如果是这样,在 Windows 上的哪里可以找到它?如果可能的话,我也希望能够看到回溯。
编辑:我知道我可以将整个脚本放在 try...except 块中,但我不知道在它之前我会运行多久再次崩溃。我希望至少能够获得一些关于已经发生的崩溃的粗略信息,即使这些信息只是导致崩溃的异常类型。这样我就可以尝试更可靠地重现错误。
我怀疑崩溃是由于与外部设备的通信失败(可能是简单的电缆松动)造成的。这类故障本质上是随机的,难以重现,所以我想知道是通信错误还是真正的代码错误。
【问题讨论】:
-
查看 python 文档中的“事后”调试。
-
您要运行的脚本是什么?你能在你认为出现问题的地方贴一个小sn-p吗?
-
看起来 pdb 中的事后调试器仅适用于最后一次崩溃,并且在解释器的同一实例中。我希望能够查看 Python 在过去 24 小时内(比如说)崩溃的所有时间的列表,看看出了什么问题。这可能吗?
-
问题是我不确定问题出在哪里。该脚本与几个外部设备对话,我怀疑其中一个是罪魁祸首。如果我有一份最近的例外情况列表,我就可以着手找出问题的真正原因。
-
@poorsod 也许如果您的脚本中有基于文件的日志记录(带有时间戳、实例标识符、python 版本)和回溯,您可以参考日志文件并查明问题。由于它似乎只是偶尔发生,你确定你在解释器的所有实例上都使用了正确的 python 版本吗?