确定过程的杀手

时间:2011-03-23 07:52:48

标签: python windows-services

我有一个作为Windows服务运行的python程序,在我看来,它可以捕获所有异常。在我的开发环境中,当程序崩溃时,我无法重现任何没有记录异常的情况。除2例外:程序是通过任务管理器杀死的,或者是我关闭计算机电源。

但是,在目标环境(安装了所有必需库和安装了python的Windows 2000)上,Windows服务突然退出ca.重新启动后4分钟,不记录任何异常或失败的原因。绝对没有关闭环境。

有没有人建议如何确定杀死python程序的原因?

编辑:我无法在目标环境中使用调试器(因为它是生产级别)。因此,我需要一种方法来记录失败的原因。因此,我正在寻找可在运行时(或失败时间)记录附加信息的工具或方法,可用于事后分析。

2 个答案:

答案 0 :(得分:0)

您需要提供更多信息,例如“您的程序是多线程的吗?”代码是否取决于您使用的Python解释器的版本,或者目标环境中不存在的任何导入的模块?

如果你有GDB for Windows,你可以做“gdb -p pid”,其中“pid”是你正在运行的python程序的pid。如果发生崩溃,您可以获得后退跟踪。

答案 1 :(得分:0)

您可能还想查看sysinternals.com中的以下工具(现在由MSFT获得): http://technet.microsoft.com/en-us/sysinternals/bb795533

,例如ProcDump,Process Monitor甚至Process Explorer(比以前更不适应)。

您也可以安装轻量级调试器(如OllyDbg),或者如果碰巧在虚拟化环境中使用Moonsols工具来监控来宾VM的进程。