如何从核心转储分析内存使用情况?
我在Linux系统下遇到了一个核心转储的问题。这个程序在分配内存时出现了疯狂的情况,我需要找出至少是哪个库出现了问题。
你有什么工具推荐,可以让我大致了解内存是怎么使用的吗?我知道这个问题很复杂,可能无法完全解决。但任何能提供一些线索的工具都能帮到我。
[这个程序是用Python写的,我怀疑内存分配的问题可能是由某个用C语言写的自定义模块引起的]
2 个回答
1
问题:需要找出哪个库导致内存出现问题。
解决方案:
1) 使用valgrind工具来查找无效的内存写入或无效的内存释放。
$ valgrind --tool=memcheck --error-limit=no --track-origins=yes (python your script)
2) 使用gdb的mmap命令来找出这个库所在的地址空间。
$ gdb (your executable) -c (core)
$ vmmap
1
试着在 Python 进程上运行 Linux 的 perf 工具,并开启调用图功能。如果这个进程是多线程的,就把所有相关的轻量级进程(LWP)作为参数传入。