Визуальный детектор утечки не работает - PullRequest
2 голосов
/ 07 апреля 2011

Я только что начал использовать Visual Leak Detector для Visual C ++ 2008/2010

Когда я запускаю его в небольшом приложении (всего несколько строк с неосуществленными выделениями), он работает просто отлично.

Теперь я хочу запустить его в моем более крупном приложении (приложение wxWidgets, 2 потока), но когда я включаю

#include <vld.h>

, мое приложение не запускается полностью.Это начинает ездить на велосипеде, когда Gui создан.Приложение Somethimes загружается полностью, но опять застревает, когда я, например, нажимаю какую-то кнопку ...

Когда я нажимаю кнопку паузы, чтобы увидеть, какой код обрабатывается, я вижу только

stack: ntdll, kernel...

Кто-нибудь сталкивался с подобной проблемой?

Есть ли способ заставить ее работать?

Ответы [ 2 ]

2 голосов
/ 20 апреля 2011

Visual Leak Detector заставляет приложение работать ОЧЕНЬ медленно, наберитесь терпения.

Вы используете один двоичный файл?

У меня были проблемы, когда моя программа была разбита на основной исполняемый файл и библиотеки, загруженные во время выполнения.

Решением было сделать включение везде, особенно исполняемый файл.

Обратите внимание, что вы можете использовать VLDDisable и VLDEnable, если хотите нацеливать определенные части кода, обратите внимание, что они работают для каждого потока. Отключение в одном потоке не меняет того, что происходит в других.

0 голосов
/ 08 мая 2014

Это не совсем ответ на этот конкретный вопрос, но он решил мою проблему, и я хотел задокументировать ее где-нибудь, кто-то другой может найти ее полезной.

Я связывал программу сvld и получил

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

Я сделал дампбин vld.lib и заметил, что у него есть внешний файл с именем

      F26 __imp_?g_vld@@3VVisualLeakDetector@@A

, обратите внимание, что "g _"

Так изменилосьмой vld.h от

#pragma comment(linker, "/include:__imp_?vld@@3VVisualLeakDetector@@A")
to
#pragma comment(linker, "/include:__imp_?g_vld@@3VVisualLeakDetector@@A")

, а затем он связался и работал просто отлично.

еще раз, надеюсь, Google сможет найти этот ответ для людей, имеющих проблемы с линковкой vld.

...