Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 确定过程的杀手_Python_Windows Services - Fatal编程技术网

Python 确定过程的杀手

Python 确定过程的杀手,python,windows-services,Python,Windows Services,我有一个python程序作为windows服务运行,我认为它可以捕获所有异常。在我的开发环境中,当程序崩溃时,我不能再现任何没有异常记录的情况。除两种情况外:程序通过任务管理器终止,或我关闭计算机电源 但是,在目标环境(安装了所有必要的库和python的Windows 2000)上,Windows服务在重新启动约4分钟后突然退出,而没有记录任何异常或失败原因。环境绝对没有断电 有人建议如何确定是什么杀死了python程序吗 编辑:我无法在目标环境中使用调试器(因为它是生产级的)。因此,我需要一种

我有一个python程序作为windows服务运行,我认为它可以捕获所有异常。在我的开发环境中,当程序崩溃时,我不能再现任何没有异常记录的情况。除两种情况外:程序通过任务管理器终止,或我关闭计算机电源

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

有人建议如何确定是什么杀死了python程序吗


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

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


如果有,可以执行“gdb-ppid”,其中“pid”是正在运行的python程序的pid。如果发生碰撞,你可以得到回溯

您可能还需要从sysinternals.com(现在由MSFT收购)检查以下工具:

例如ProcDump、processmonitor甚至processexplorer(但与以前的版本相比适应性较差)


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

这听起来像是堆栈溢出。您可以在生产环境中附加调试器吗?不,很遗憾,我不能在目标环境中使用调试器。您可以使用“python-dv yourscript.py”在调试模式下运行解释器。或者使用“python-m pdb yourscript.py”来运行带有模块“pdb”的脚本,模块是python调试器。虽然这可能很困难,但我会尝试找到一种在目标环境中运行
ntsd
的方法。使用生产环境的标准策略:在调试详细级别写入系统日志(Windows事件日志)。