我正在使用 CentOS 存储库中的标准 gcc 4.4 软件包在 64 位 CentOS 5.8 上开发一个静态链接的 64 位 C++ 应用程序。它使用的内存似乎比我预期的要多,所以我尝试使用 massif 来分析内存使用情况。我已经用调试信息编译然后运行
valgrind --tool=massif ./MyProg
从 MyProg 所在的目录。除了以下 massif.out.XXXX 示例之外,它永远不会产生任何结果。
desc: (none)
cmd: ./MyProg
time_unit: i
#-----------
snapshot=0
#-----------
time=0
mem_heap_B=0
mem_heap_extra_B=0
mem_stacks_B=0
heap_tree=empty
请注意,这是文件的全部内容,我的程序可以运行几分钟。
我尝试了 valgrind 和 massif 的各种选项,但无济于事。我什至尝试使用 MyProg 的绝对路径,以防万一。我已经尝试下载 valgrind 的最新稳定版本(3.8.1)并编译和运行它(因为 CentOS 使用的是 3.5.0),结果相同。作为一个健全的检查,我跑了
valgrind --tool=massif ls -l
并且它按预期生成了多个内存使用量非零的快照。
我尝试使用我能想到的所有关键字组合在线搜索,但没有发现任何类似的问题。
附带说明一下,我可以使用 valgrind 的默认 memcheck 工具成功地分析应用程序,以防万一这是有用的信息。
有谁知道为什么 massif 无法分析我的应用程序?