视觉泄漏检测器不起作用

时间:2011-04-07 17:08:33

标签: c++ visual-studio-2010 memory-leaks memory-leak-detector visual-leak-detector

我刚开始使用Visual Leak Detector for Visual C++ 2008/2010

当我在小应用程序上运行它时(只有几行未删除的分配)它运行正常。

现在我想将它运行到我更大的应用程序(wxWidgets app,2个主题)中,但是当我包含

#include <vld.h>

我的应用程序无法完全启动。当Gui被创建时,它开始循环。 Somethimes应用程序完全加载,但再次,当我按下某个按钮时卡住...

当我点击暂停按钮时,要查看正在处理的代码,我只看到

stack: ntdll, kernel...

是否有人遇到过类似的问题?

有没有办法让它发挥作用?

2 个答案:

答案 0 :(得分:2)

Visual Leak Detector使应用程序运行缓慢,耐心等待。

您是否正在运行单个二进制文件?

当我的程序被拆分为主要可执行文件和运行时加载的库时,我遇到了问题。

解决方案是在所有地方都进行#include,尤其是可执行文件。

请注意,如果要定位代码的特定部分,可以使用VLDDisable和VLDEnable,请注意每个线程的这些工作。在一个线程中禁用不会修改其他线程中发生的事情。

答案 1 :(得分:0)

这不是这个具体问题的答案,但它解决了我的问题,我想将其记录在其他人可能会发现它对他们有帮助的地方。

我正在将程序与vld连接并获得

fatal error LNK1120: 1 unresolved externals
error LNK2001: unresolved external symbol "__declspec(dllimport) class     VisualLeakDetector vld" (__imp_?vld@@3VVisualLeakDetector@@A)

我做了一个vld.lib的dumpbin,发现它有一个外部叫做

      F26 __imp_?g_vld@@3VVisualLeakDetector@@A

注意&#34; g _&#34;

所以从

改变了我的vld.h
#pragma comment(linker, "/include:__imp_?vld@@3VVisualLeakDetector@@A")
to
#pragma comment(linker, "/include:__imp_?g_vld@@3VVisualLeakDetector@@A")

然后它链接并且工作正常。

再次,希望谷歌能够为vld链接问题的人找到这个答案。