首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Val差尔的massif工具不会分析我的应用程序

Val差尔的massif工具不会分析我的应用程序
EN

Stack Overflow用户
提问于 2012-11-27 16:18:24
回答 1查看 4.6K关注 0票数 19

我正在64位C++ 5.8上开发一个静态链接的64位CentOS应用程序,使用来自CentOS存储库的标准gcc 4.4包。它所使用的内存似乎比我预期的要多,所以我尝试使用massif来分析内存使用情况。已使用调试信息进行编译,然后运行

工具=massif ./MyProg

来自MyProg所在的目录。除了下面的massif.out.XXXX示例之外,它不会产生任何结果。

代码语言:javascript
复制
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

注意,这是文件的全部内容,我的程序可以运行很多分钟。

我试过各种各样的方法,但都没有用。我甚至尝试使用MyProg的绝对路径,以防万一。我已经尝试下载了最新的稳定版本valgrind (3.8.1),并编译和运行它(因为CentOS使用的是3.5.0),结果是相同的。作为一次理智检查,我跑了

工具=massif ls -l

它产生了多个快照,内存使用率达到预期的非零。

我试着用我能想到的所有关键字组合在线搜索,但没有发现任何类似的问题。

作为附带说明,我可以成功地使用val差尔的默认memcheck工具对应用程序进行分析,以防这是有用的信息。

有人知道为什么massif会不能分析我的应用程序吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-27 19:38:06

如果应用程序是静态链接的,则不能使用val研进行分析。通过为您的程序提供自己版本的分配函数来工作,它通过重写动态查找来完成。

如果您可以动态地链接到标准库(libc和libstdc++),那么它很可能能够执行您正在寻找的内存分析。

来自瓦伦堡常见问题:

第二,如果您的程序是静态链接的,那么大多数Val砂矿工具也不能正常工作,因为它们无法用自己的版本替换某些函数,比如malloc。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13588474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档