是否可以在代码的一部分上运行valgrind?

时间:2015-01-07 19:24:19

标签: c++ memory-leaks valgrind

我在相当大的系统的已知部分内发生了内存泄漏。我想全速运行直到该部分代码,在该部分运行valgrind memcheck,并在所述部分结束时收集valgrind memcheck报告,而不进一步完成运行。这可能吗?

1 个答案:

答案 0 :(得分:6)

不是memcheck,不是。根据{{​​3}},callgrind是目前唯一支持它的valgrind组件:

  

<强> 5.4。是否可以将Valgrind附加到已经运行的程序中?

     

没有。 Valgrind为运行程序提供的环境与正常程序的环境有很大不同,例如由于内存布局不同。因此,Valgrind必须从一开始就拥有完全的控制权。

     

通过在没有任何工具的情况下运行程序(包括减速约5倍,比大多数工具的速度慢),然后在到达目标点后添加检测,可以实现类似的功能。但是,该工具必须提供对此的支持,而Callgrind是目前唯一具有此类支持的工具。有关详细信息,请参阅callgrind_control计划中的说明。