nau*_*cho 8 c++ linux profiling valgrind callgrind
我正在使用callgrind来配置一个Linux多线程应用程序,而且大多数它工作得很好.我用仪表关闭(--instr-atstart = no)启动它,然后一旦设置完成,我用callgrind_control -i打开它.但是,当我更改某些配置以尝试分析应用程序的不同部分时,它甚至在我开启仪器之前就开始运行得非常慢.基本上,部分代码需要几秒钟才能正常运行,需要花费一个多小时的时间来调用callgrind(关闭仪器).关于为什么会这样以及如何调试/解决缓慢的任何想法?
osg*_*sgx 10
Callgrind是一个基于valgrind构建的工具.Valgrind基本上是一个动态二进制翻译器(libVEX,valgrind的一部分).它将解码每条指令并将它们编译成同一CPU的某些指令流.
据我所知,没有办法为已经运行的进程启用此转换(在valgrind实现中),因此从程序开始就一直启用动态转换.它也不能关闭.
通过添加一些检测代码,在valgrind上构建工具."Nul"工具(nulgrind)是不添加任何仪器的工具.但是每个工具都使用valgrind并且动态转换始终处于活动状态.在callgrind中打开和关闭只是打开和关闭其他仪器.
由Valgrind实现的虚拟CPU是有限的,有(不完整的)限制列表http://valgrind.org/docs/manual/manual-core.html#manual-core.limits大多数限制都是关于浮点运算,以及他们可以被模仿错误.
变更是否与浮点运算相关?或者与其他列出的限制?
您还应该知道," Valgrind序列化执行,以便一次只运行一个线程 ".(来自同一页面的manual-core.html)
| 归档时间: |
|
| 查看次数: |
1870 次 |
| 最近记录: |