我在相当大的系统的已知部分内发生了内存泄漏。我想全速运行直到该部分代码,在该部分运行valgrind memcheck,并在所述部分结束时收集valgrind memcheck报告,而不进一步完成运行。这可能吗?
答案 0 :(得分:6)
不是memcheck,不是。根据{{3}},callgrind是目前唯一支持它的valgrind组件:
<强> 5.4。是否可以将Valgrind附加到已经运行的程序中?
没有。 Valgrind为运行程序提供的环境与正常程序的环境有很大不同,例如由于内存布局不同。因此,Valgrind必须从一开始就拥有完全的控制权。
通过在没有任何工具的情况下运行程序(包括减速约5倍,比大多数工具的速度慢),然后在到达目标点后添加检测,可以实现类似的功能。但是,该工具必须提供对此的支持,而Callgrind是目前唯一具有此类支持的工具。有关详细信息,请参阅
callgrind_control
计划中的说明。