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鏈接問題的人。