Типы дескрипторов GDI - PullRequest
2 голосов
/ 25 июля 2011

Я сейчас пытаюсь отследить утечку дескриптора GDI.В настоящее время я использую GDIView , чтобы отследить его.Инструмент разделяет объекты GDI на категории Pen, ExtPen, Bitmap, Font, Palette, Region, DC, DC метафайла, DC расширенного метафайла и другие GDI.Эти категории суммируются в столбце под названием GDI Total.Кроме того, есть колонка под названием All GDI.Именно в этой колонке я обнаруживаю утечку.

Поскольку у меня нет исходного кода для инструмента, я не вижу, что на самом деле происходит.Автор инструмента пропустил тип ручки?Похоже на это.Я знаю, что - это утечка, потому что некоторые пользователи сообщают, что им показывается печально известный диалог Требуемый ресурс был (конец текста).Может потребоваться несколько недель, чтобы диалоговое окно появилось, поэтому я почти уверен, что это не DC.

Любые идеи о том, как отследить это, будут высоко оценены!Поскольку у меня ограниченный бюджет, инструменты за тысячу долларов исключены.Отладки хуков в GDI будет достаточно, так как я не против делать детективную работу.

Ответы [ 2 ]

2 голосов
/ 25 июля 2011

Я нашел проблему.Видимо, GDIView считает, что значки попадают в неизвестную категорию.Проблема заключалась в том, что значок загружался и прикреплялся к объекту.Объект не был настроен на автоматическое удаление значка при уничтожении.По электронной почте автору указанного инструмента ...

0 голосов
/ 25 июля 2011

Однажды у меня возникла похожая проблема, и я воспользовался диспетчером задач - попросил его показать количество дескрипторов GDI для каждого процесса и перешагнул через программный код, чтобы увидеть, где число дескрипторов неожиданно увеличивается и не уменьшается обратно.Это заняло некоторое время, но, наконец, с помощью функции «разделяй и властвуй» я обнаружил ошибку.

...