如何从核心转储中分析内存使用情况?
Posted
技术标签:
【中文标题】如何从核心转储中分析内存使用情况?【英文标题】:How to analyze memory usage from a core dump? 【发布时间】:2011-06-09 02:49:08 【问题描述】:我在 Linux 下有一个核心转储。该过程继续进行内存分配横冲直撞,我至少需要找到发生这种情况的库。
您建议使用什么工具来大致了解内存的去向?我知道这个问题很难/完全无法解决。任何至少可以提供一些线索的工具都会有所帮助。
[这是一个python进程,怀疑内存分配是由用C编写的自定义模块之一引起的]
【问题讨论】:
我尝试了几种不同的工具:直接 gdb、gdb + libpython、gdbheap、自定义 .gdbinit。 我想类似的问题已经在这里解决了:segmentation fault - core dump in python C-extension 【参考方案1】:尝试在启用调用图的 python 进程上运行 linux perf 工具。 如果它的多线程进程将所有关联的 LWP 作为参数。
【讨论】:
【参考方案2】:问题:需要找出哪个库内存出现故障。
解决方案:
1) 使用 valgrind 找出 Invalid Write 或 Invalid Free of Memory
$ valgrind --tool=memcheck --error-limit=no --track-origins=yes (python your script)
2) 使用 gdb 的 mmap 命令找出库在哪个地址空间
$ gdb (your executable) -c (core)
$ vmmap
【讨论】:
以上是关于如何从核心转储中分析内存使用情况?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C 中分析 openMPI 程序的内存使用情况和性能