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

16 投票
2 回答
13804 浏览
提问于 2025-04-16 09:57

我在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)作为参数传入。

撰写回答