如何从核心转储中分析内存使用情况?

16
我在Linux下有一个核心转储。该进程进行了内存分配狂欢,我需要至少找到发生这种情况的库是哪个。
您建议使用什么工具来获得内存去向的广泛概述?我知道这个问题很难/无法完全解决。任何可以提供一些线索的工具都会有所帮助。
[这是一个Python进程,怀疑内存分配是由其中一个用C编写的自定义模块引起的]

我尝试过几种不同的工具:直接使用 gdb、gdb + libpython、gdbheap、自定义 .gdbinit。 - Andraž Tori
我认为类似的问题在这里已经得到解决了:Python C扩展中的分段错误 - 核心转储 - k500
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作为参数给出。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接