我正在尝试为一个消耗过多内存并被 OS (FreeBSD) 以 9 信号杀死的程序进行内存分析。这种情况发生在某些特定数据上,因此在另一个(例如较小的)数据集上对其进行分析不会有太大帮助。当程序被终止时,9 massif 根本不会生成任何输出。在这种情况下可以做什么来分析内存?
最佳答案
如果您有最新的 Valgrind 版本 (>= 3.7.0), Valgrind 有一个嵌入式 gdbserver,因此它可以与 gdb 一起使用。
在您的应用程序开始在 Valgrind 下运行之前,您可以放置断点。 遇到断点时,可以使用GDB监控命令 调用 Valgrind 工具特定的功能。 例如,使用 Massif,您可以触发报告的生成。 使用 Memcheck,您可以进行泄漏搜索、检查有效性位,...
也可以从 shell 命令触发这些监控命令 行(使用 Valgrind vgdb 实用程序)
关于memory - 在 "killed 9"进程上使用 massif,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13512252/