调试似乎无故暂停的Python程序

时间:2018-11-27 08:43:42

标签: python debugging

我正在编写一个Python程序来分析日志文件。因此,基本上我有大约30000个中型日志文件,并且我的Python脚本旨在对每个日志文件执行一些简单的(逐行)分析。处理一个文件大约需要不到5秒的时间。

因此,一旦设置了处理程序,我就将其留在那里,大约14个小时后,我的Python脚本在分析了一个日志文件后就暂停了。似乎它尚未写入文件系统来分析此文件的输出,仅此而已。没有更多的程序。

我检查了内存使用情况,看起来不错(小于1G),我也尝试写入文件系统(touch test),它也可以正常工作。所以我的问题是,我应该如何继续调试问题?谁能对此发表一些想法?我希望这不是太笼统。谢谢。

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

使用以下命令尝试使用此工具https://github.com/khamidou/lptrace

sudo python lptrace -p <process_id>

它将打印程序调用的每个python函数,并可以帮助您了解程序卡在哪里或处于无限循环中。

如果它不输出任何东西,那很可能会使您的程序卡住,所以请尝试

pstack <process_id>

检查堆栈跟踪并找出卡在哪里。 pstack 的输出是c帧,但是我相信您可以找到某种有用的方法来解决您的问题。