【发布时间】:2011-03-23 07:52:47
【问题描述】:
我有一个 python 程序作为 Windows 服务运行,我认为它可以捕获所有异常。在我的开发环境中,当程序崩溃时,我无法重现任何没有记录异常的情况。除了两种情况:程序被任务管理器杀死或我关闭了计算机。
但是,在目标环境(安装了所有必需库和 python 的 Windows 2000)上,Windows 服务突然退出。重新启动后 4 分钟,未记录任何异常或失败原因。环境肯定没有断电。
有没有人建议如何确定是什么杀死了 python 程序?
编辑:我不能在目标环境中使用调试器(因为它是生产级别)。因此,我需要一种记录失败原因的方法。因此,我正在寻找工具或方法来在运行时(或故障时间)记录可用于事后分析的附加信息。
【问题讨论】:
-
这听起来像是堆栈溢出。可以在生产环境中附加调试器吗?
-
不,很遗憾我不能在目标环境中使用调试器。
-
您可以使用“python -dv yourscript.py”在调试模式下运行解释器。或者也许是“python -m pdb yourscript.py”来使用模块“pdb”运行你的脚本,它是python调试器。
-
虽然有难度,但我还是想办法在目标环境中运行
ntsd。 -
对生产环境使用标准策略:以 DEBUG 详细级别写入系统日志(Windows 事件日志)。