2012-08-06 206 views
2

我有一个脚本已经崩溃(看似)不可预测。我无法弄清楚如何重现它。Python系统日志文件

Python是否保留一个全局系统日志文件,所以我可以回去看看什么异常导致退出?如果是这样,那么在Windows上可以找到哪里?如果可能的话,我希望能够看到回溯。

编辑:我知道我可以整个脚本try...except块内,但我不知道多久会来运行它再次崩溃之前。我希望能够至少获得关于已经发生的崩溃的粗略信息,即使这些信息只是导致崩溃的异常类型。这样我可以尝试更可靠地重现错误。

我怀疑崩溃是由于与外部设备通信失败(可能是简单的松散电缆)造成的。这些失败本质上是随机的,难以重现,所以我想知道它是通信错误还是真正的代码错误。

+1

请参阅python文档中的“验尸后”调试。 – 2012-08-06 14:17:04

+0

你试图运行的是什么脚本?你可以发布一个你认为发生问题的小片段吗? – 2012-08-06 14:30:32

+1

它看起来像pdb中的验尸调试器只适用于最后的崩溃,并且在解释器的同一个实例中。我希望能够查看Python在过去24小时内崩溃的所有时间,并查看出了什么问题。这可能吗? – 2012-08-06 14:34:47

回答

0

如果你想知道关于例外的信息,你可以使用此代码。

try: 
    #do some stuff 
    1/0 #stuff that generated the exception 
except Exception as ex: 
    print ex 
    raw_input() 

为了正确调试,有一个工具winpdb。有一个非常好的教程可用于学习使用它的调试debugging tutorial

+1

我完全熟悉'try ... except'和调试技术。我希望能够回到半小时前坠毁的实例并了解发生了什么事。 – 2012-08-06 14:31:07

0

你可以“赶上”exception?如果是,则可以使用traceback来打印堆栈跟踪,并找出发生问题的位置。

然后,您可以使用Eclipse调试有问题的模块(即使它是Python库的一部分,它将以可读的形式)。


import traceback 
... 
... 

try: 
    <your script> 
except Exception as runtime_ex: 
    print runtime_ex, traceback.format_exc()