Tys*_*son 17 c++ linux valgrind centos massif
我正在使用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
Run Code Online (Sandbox Code Playgroud)
请注意,这是文件的全部内容,我的程序可以运行很多分钟.
我尝试了valgrind和massif的各种选择无济于事.我甚至尝试使用MyProg的绝对路径,以防万一.我已经尝试下载最新稳定版本的valgrind(3.8.1)并编译并运行它(因为CentOS使用3.5.0)具有相同的结果.作为一个完整性检查,我跑了
valgrind --tool = massif ls -l
并且它产生了多个快照,并且按预期使用了非零内存.
我尝试使用我能想到的每种关键字组合在线搜索,但没有发现任何类似的问题.
作为旁注,我可以使用valgrind的默认memcheck工具成功分析应用程序,以防有用信息.
有谁知道为什么massif无法描述我的应用程序?
Dav*_*e S 15
如果应用程序是静态链接的,则无法使用valgrind进行分析.Valgrind通过向程序提供自己的分配函数版本来工作,它通过覆盖动态查找来完成.
如果您可以动态链接标准库(libc和libstdc ++),那么它应该能够执行您正在寻找的内存分析.
其次,如果您的程序是静态链接的,那么大多数Valgrind工具都无法正常工作,因为它们无法用自己的版本替换某些功能,例如malloc.
归档时间: |
|
查看次数: |
3500 次 |
最近记录: |