2

使用Visual Leak Detector for Visual C++ 2008/2010视觉检漏仪不起作用

当我小的应用程序运行(只是未删除分配几号线)我刚开始它工作得很好。

现在我想将它运行到我更大的应用程序(wxWidgets的应用程序,2个线程),但是当我包括

#include <vld.h> 

我的应用程序不会完全启动。当Gui创建时它开始骑车。 Somethimes应用负载完全,但同样,卡住我的时候,例如按按钮的一些...

当我打暂停按钮,看看哪些代码正在处理我看到的只是

stack: ntdll, kernel...

是谁遇到类似的问题?

有什么办法可以使它工作吗?

+0

你有没有试过在一个简单的2线程程序上测试它?也许它有多线程问题。另外,如果您的程序需要资源,请记住,泄漏检测器往往是主要的性能影响。你可能只是目睹了主要的缓慢(或者不)。 – 2011-04-08 04:03:59

+0

@Brandon Bohrer:我还没有试过简单的2线程序,但我会......这不仅仅是缓慢的开始,因为一些其他的“幸运”时间在几秒钟内就会启动。 – relaxxx 2011-04-09 09:15:29

+0

调用堆栈包含nvoglv32.dll。你确定你正在寻找正确的线程吗?NVidia驱动程序启动了一些在OpenGL应用程序中执行实际渲染的线程。 – vividos 2011-04-20 07:16:54

回答

2

视觉泄漏检测器使应用程序运行非常缓慢,要有耐心。

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

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

解决的办法是到处执行#include,特别是可执行文件。

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

0

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

我用连接VLD程序,并得到

fatal error LNK1120: 1 unresolved externals 
error LNK2001: unresolved external symbol "__declspec(dllimport) class  VisualLeakDetector vld" ([email protected]@[email protected]@A) 

我做vld.lib的DUMPBIN,发现它有一个外部称为

 F26 [email protected]@[email protected]@A 

通知 “G_”

所以改变了我的vld.h从

#pragma comment(linker, "/include:[email protected]@[email protected]@A") 
to 
#pragma comment(linker, "/include:[email protected]@[email protected]@A") 

然后它链接并工作得很好。

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