调试内存消耗\已经运行的脚本泄漏

时间:2014-01-20 14:59:26

标签: python debugging python-2.7 memory-leaks gdb

我有一个Python程序开始吃掉很多内存。问题是它已经工作了大约2天没有问题,但突然开始吃掉大量的RAM。脚本非常大,很难理解那里发生了什么。

有没有办法附加到正在运行的进程并转储有关对象的一些信息?因此,我将能够理解那里发生了什么。

我使用了一些python模块,它报告了一些像这样的数据:

Strings: 4567, total memory: 45MB
Lists: 32, total memory: 12MB
Dicts: 1, total memory: 1MB
...

当然,这只是一个想法 - 任何与记忆相关的报道都会受到赞赏。

我找到了调试正在运行的进程的唯一可行解决方案:gdb。但我根本不熟悉它。

请注意,我不想更改代码,导入pdb,重新启动脚本等等 - 否则我必须再等2天。

谢谢!

1 个答案:

答案 0 :(得分:2)

在基于glibc的系统上,您可以使用gdb-heap扩展来检查正在运行的进程的堆。 gdb-heap也知道Python如何进行内存管理。请参阅:https://fedorahosted.org/gdb-heap/