调试一个有点“挂起”的python应用程序

2024-04-25 17:05:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个事件驱动的应用程序,用python编写。一段时间后(通常是1周以上),它似乎就停止了对事件的响应。当发生这种情况时,我只需按ctrl-C键并重新运行,一切都恢复正常。然而,这种情况持续发生有点烦人,我不知道是什么原因造成的。有没有一种方法可以运行我的应用程序,当这种情况发生时,应用程序不再接受连接时,我可以进入调试器,看看它在做什么,为什么不连接?

我以前使用过pdb,但是我使用它的方式(if condition: pdb.set_trace())在这里并不适用,因为我不知道它失败时在代码中做什么。我的理想情况是代替Ctrl-C,也许我点击Ctrl-somethingelse,这会导致它停止并进入调试器。这样的事容易做吗?在


Tags: 方法代码应用程序if方式事件trace情况
1条回答
网友
1楼 · 发布于 2024-04-25 17:05:21

在您的情况下触发pdb可能并不简单。但是,每当我需要调试这种挂起时,我会使用^{}函数检查进程中所有线程的回溯的“快照”。在

您可以使用计时器定期调用它并将输出打印到日志文件中,并在发现挂起时引用它,或者利用一些RPC机制(例如信号)按需触发进程中的函数调用。我通常做后者,因为我的系统中的进程已经监听了这样的RPC请求(使用rpyc)。在

相关问题 更多 >