Библиотека vld и функция GetOpenFileName
От: Melamed Россия  
Дата: 19.03.15 20:00
Оценка:
Я сейчас пытаюсь поймать утечку памяти. На форуме мне посоветовали библиотеку VLD. Я посмотрел и понял ее преимущества перед встроенным детектором утечек памяти. Стал встраивать ее в мой проект

#include <vld.h>


Но почему то программа зависает на WIN API функции GetOpenFileName. Пробовал вызывать функцию VLDDisable(). Результат нулевой. Зависание пропадает, когда я из проекта убираю все объявления

#include <vld.h>


Да еще вопрос. Как поймать утечку с помощью данной библиотеки не в основном потоке программы?
Re: Библиотека vld и функция GetOpenFileName
От: _Artem_ Россия  
Дата: 20.03.15 04:22
Оценка:
Здравствуйте, Melamed, Вы писали:

M>Да еще вопрос. Как поймать утечку с помощью данной библиотеки не в основном потоке программы?

Она корректно ищет утечки во всех потоках. На выходе программы выводятся все call stack для утекшей памяти.

Насчет зависания, с таким не сталкивался. Студия запущена из под админа (run as Administrator в контекстном меню на ярлыке студии)?
Re: Библиотека vld и функция GetOpenFileName
От: SaZ  
Дата: 20.03.15 08:15
Оценка:
Здравствуйте, Melamed, Вы писали:

M>Но почему то программа зависает на WIN API функции GetOpenFileName. Пробовал вызывать функцию VLDDisable(). Результат нулевой. Зависание пропадает, когда я из проекта убираю все объявления


Вангую: может, у вас включена загрузка PDB с Mircosoft Remote Symbol Server (или как он там правильно)? Как я понимаю, дело в том, что Comdlg32.dll грузится лишь при первом обращении к GetOpenFileName и, вероятно, там начинаются какие-то проблемы.

З.Ы. если что, то такие тулзы лучше использовать в релизной сборке с включенными оптимизациями.
Re: Библиотека vld и функция GetOpenFileName
От: Zenden Россия  
Дата: 01.04.15 07:30
Оценка:
Здравствуйте, Melamed, Вы писали:


M>Я сейчас пытаюсь поймать утечку памяти. На форуме мне посоветовали библиотеку VLD. Я посмотрел и понял ее преимущества перед встроенным детектором утечек памяти. Стал встраивать ее в мой проект



Немного оффтоп. Почему VLD находит утечки только в тех файлах, в которых она подключена? Приходится юзать force include.
Re[2]: Библиотека vld и функция GetOpenFileName
От: _Artem_ Россия  
Дата: 01.04.15 07:59
Оценка:
Здравствуйте, Zenden, Вы писали:

Z>Немного оффтоп. Почему VLD находит утечки только в тех файлах, в которых она подключена? Приходится юзать force include.

Отнюдь, подключал в main файле. Находилось везде.
Re[2]: Библиотека vld и функция GetOpenFileName
От: KindDragon  
Дата: 02.04.15 16:07
Оценка: 3 (1)
> Но почему то программа зависает на WIN API функции GetOpenFileName.

Есть такая бага https://vld.codeplex.com/workitem/9859 . Работаем над проблемой

> Немного оффтоп. Почему VLD находит утечки только в тех файлах, в которых она подключена? Приходится юзать force include.


Потому что VLD нужны гарантии что она будет загружена до и выгружена после всех Dll в которых она подключена. Линковка всех dll с vld позволяет добиться этого.
Отредактировано 02.04.2015 16:32 KindDragon . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.