2024-03-29 08:15:51 发布
网友
我有一个python应用程序,它应该是非常长寿命的,但有时进程只是消失,我不知道为什么。当这种情况发生时什么都不会被记录,所以我有点不知所措。在
在代码中有没有某种方法可以钩住一个退出事件,或者用其他方法让我的一些代码在进程退出之前运行?我想记录内存结构的状态,以便更好地了解发生了什么。在
您可以尝试直接从控制台运行应用程序(在windows上是cmd,在unix上是sh/bash/etc),这样当进程结束时,您可以看到任何堆栈跟踪等打印到控制台上。在
我不确定您是否能够修改源代码,但如果可以,您可以尝试以下操作:
def debugexcept(type, value, tb): if hasattr(sys, 'ps1') or not (sys.stderr.isatty() and sys.stdin.isatty()) or type == SyntaxError: sys.__excepthook__(type, value, tb) else: import traceback, pdb traceback.print_exception(type, value, tb) print pdb.pm() sys.excepthook = debugexcept
如果您从命令行启动python程序,那么应该在python调试程序停止运行时将其转储到python调试器中,假设发生了导致异常的“坏”情况。我猜可能stderr/stdout被捕获了,你没有看到什么异常吗?在
ie搜索如下内容:
如果这一过程毫无例外地消亡,那么这可能更难找到。windows上的一种(非常困难的方法)是使用类似windbg的东西附加到进程中,并在CRT中的某个相关位置设置断点。在
祝你好运!在
^{}发音为“at exit”。第一次读这个函数名时,我把它读作“一个texit”,这几乎没有什么意义。在
您可以尝试直接从控制台运行应用程序(在windows上是cmd,在unix上是sh/bash/etc),这样当进程结束时,您可以看到任何堆栈跟踪等打印到控制台上。在
我不确定您是否能够修改源代码,但如果可以,您可以尝试以下操作:
如果您从命令行启动python程序,那么应该在python调试程序停止运行时将其转储到python调试器中,假设发生了导致异常的“坏”情况。我猜可能stderr/stdout被捕获了,你没有看到什么异常吗?在
ie搜索如下内容:
^{pr2}$如果这一过程毫无例外地消亡,那么这可能更难找到。windows上的一种(非常困难的方法)是使用类似windbg的东西附加到进程中,并在CRT中的某个相关位置设置断点。在
祝你好运!在
^{} 发音为“at exit”。第一次读这个函数名时,我把它读作“一个texit”,这几乎没有什么意义。在
相关问题 更多 >
编程相关推荐