Я изучаю проблему утечки GDI в одном из наших приложений smart-client. Я ищу инструмент (например, tasklist), чтобы получить объекты GDI, связанные с процессом. Я вижу объекты GDI в taskmanager, но мое требование периодически его записывать. Например, в текстовом файле.
Как получить объекты GDI, связанные с процессом
Ответ 1
Должно быть довольно просто написать программу для периодического журнала количества обработчиков GDI, используемых в процессе, с помощью функции API GetGuiResources.
Ответ 2
Полностью бесплатный Process Explorer (http://www.sysinternals.com) позволяет вам графически проверить этот и множество других аспектов, связанных с запущенными процессами. Добавьте GDI Objects
к отображаемым столбцам, и все готово. Столбец GDI Objects
находится на вкладке Process Memory
в диалоговом окне Select Columns
.
ПРИМЕЧАНИЕ: Microsoft приобрела их инструменты, и я думаю, что Марк Руссинович теперь работает на Microsoft. Инструменты Sysinternals, как правило, не требуют какой-либо установки, кроме как скопировать их в удобное для вас место, и они должны быть в вашем наборе инструментов, если они еще не установлены.
Ответ 3
Используйте GDIView, бесплатный инструмент от NirSoft.
Их описание:
GDIView - уникальный инструмент, который отображает список дескрипторов GDI (кистей, ручек, шрифтов, растровых изображений и т.д.), открытых каждым процессом. Он отображает общий счетчик для каждого типа дескриптора GDI, а также подробную информацию о каждом дескрипторе. Этот инструмент может быть полезен разработчикам, которые должны отслеживать утечку ресурсов GDI в своем программном обеспечении.
Вы можете сохранить список счетчиков GDI в виде обычных, разделенных табуляцией, разделенных запятыми и табличных текстовых файлов, а также горизонтального или вертикального HTML файла или XML файла.