我有一个事件驱动的应用程序,用python编写。一段时间后(通常是1周以上),它似乎就停止了对事件的响应。当发生这种情况时,我只需按ctrl-C键并重新运行,一切都恢复正常。然而,这种情况持续发生有点烦人,我不知道是什么原因造成的。有没有一种方法可以运行我的应用程序,当这种情况发生时,应用程序不再接受连接时,我可以进入调试器,看看它在做什么,为什么不连接?
我以前使用过pdb,但是我使用它的方式(if condition: pdb.set_trace()
)在这里并不适用,因为我不知道它失败时在代码中做什么。我的理想情况是代替Ctrl-C,也许我点击Ctrl-somethingelse,这会导致它停止并进入调试器。这样的事容易做吗?在
在您的情况下触发pdb可能并不简单。但是,每当我需要调试这种挂起时,我会使用^{} 函数检查进程中所有线程的回溯的“快照”。在
您可以使用计时器定期调用它并将输出打印到日志文件中,并在发现挂起时引用它,或者利用一些RPC机制(例如信号)按需触发进程中的函数调用。我通常做后者,因为我的系统中的进程已经监听了这样的RPC请求(使用rpyc)。在
相关问题 更多 >
编程相关推荐