Нахождение использования ресурсов GDI/пользователя от дампа катастрофического отказа

вы всегда можете передать второй объект в ViewBag или View Data.

6
задан Jack Bolding 23 September 2008 в 17:19
поделиться

2 ответа

Была статья MSDN Magazine от несколько лет назад, это говорило об утечках GDI. Это указывает на несколько различных мест с хорошей информацией.

В WinDbg можно также попробовать !poolused команда для некоторой информации.

Нахождение утечек ресурсов в от дампа катастрофического отказа (вскрытие) может быть трудным - если это всегда было то же место, с помощью той же переменной, которая пропускает память, и Вы удачливы, Вы видели последнее место, что это будет пропущено и т.д. Это, вероятно, было бы намного легче с живой программой, работающей под отладчиком.

Можно также попытаться использовать Microsoft Detours, но лицензия не всегда удается. Это также немного более агрессивно и усовершенствовано.

4
ответ дан 10 December 2019 в 02:56
поделиться

Я провел прошлую неделю, работая над инструментом средства поиска утечки GDI. Мы также выполняем регулярное стресс-тестирование, и оно никогда не длилось дольше, чем ценность дня w/o остановка из-за сверхпотребления дескриптора объекта user/gdi.

Мои попытки были довольно успешны насколько я могу сказать. Конечно, я провел некоторое время, заранее ища альтернативное и более быстрое решение. Это стоит упомянуть, у меня был некоторый предыдущий полуудачный опыт с инструментом GDILeaks из упомянутой выше статьи MSDN. Не говоря уже о том, что я должен был решить несколько проблем до помещения его для работы, и на этот раз это просто не дало мне, какой и как я хотел это. Оборотная сторона их подхода является тяжелым интерфейсом отладчика (это замедляет исследуемую цель порядками величины, которые я нашел недопустимым). Другая оборотная сторона - то, что это не работало все время - над некоторыми выполнениями, я просто не мог заставить это сообщать/вычислять о чем-либо! Его сложность (судящий объемом кода) была другим фактором паники далеко. Я не большой поклонник графический интерфейсов пользователя, поскольку это - моя вера, что я более продуктивен без окон вообще; o). Мне также было трудно заставить его найти и использовать мои символы.

Еще один инструмент, который я использовал прежде, чем установить на записать мое собственное, был leakbrowser.

Так или иначе я наконец обосновался на итерационном подходе для достижения следующих целей:

  • незначительные потери производительности
  • простота реализации
  • неразрушающий (используемый для нескольких продуктов)
  • доверие как можно больше доступному

Я использовал обходы (некоммерческое использование) для базовой функциональности (это - injectible DLL). Введите JavaScript в эксплуатацию для автоматической генерации кода (15K сценарий генералу 100K исходный код - никакой способ, которым я кодирую это вручную и никакой включенный препроцессор C!) плюс windbg расширение для анализа данных и поддержки снимка/разности.

Для рассказывания длинной короткой истории - после того, как я был закончен это были несколько нескольких часов для сбора информации во время другого стресс-теста и другой час, чтобы проанализировать и зафиксировать утечки.

Я буду более, чем рад совместно использовать свои результаты.

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

Править: Найдите инструмент здесь

5
ответ дан 10 December 2019 в 02:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: