Отладка кода дампа процесса

Мое приложение C# потребляет слишком много памяти рабочего набора, и я хочу видеть объекты, которые есть в памяти рабочего набора. Я выгрузил процесс и создал файл дампа как ответ на этот вопрос. Как использовать файл дампа для диагностики утечки памяти? Но я не могу отладить файл из Windbg, так как он говорит "невозможно загрузить clr", когда я набираю команду ".loadby sos clr". Также команды '! Dumpheap -stat' и '! Threads' также говорят, что 'не найдены потоки экспорта'. Пожалуйста, посоветуйте мне способ отладки этого дамп-файла и поиска объектов. Пожалуйста, предоставьте решение помимо использования VS2013 Ultimate.

4 ответа

Решение

Я рекомендую вам использовать расширения Psscor2 или Psscor4 (в зависимости от версии.NET, используемой вашим приложением). После настройки среды отладки (установка WinDbg и копирование в его папку файлов Psscor) загрузите файл дампа и загрузите соответствующую версию Psscor:

.load psscor4

Затем выполните команду для загрузки символов с серверов Microsoft (при необходимости), убедитесь, что у вас есть подключение к Интернету:

!symfix

И теперь у вас должен быть доступ ко множеству очень интересных команд (ищите! Help, чтобы перечислить их). Чтобы увидеть использование памяти по типу использования:

!dumpheap -stat

Чтобы увидеть общее использование памяти (iu означает, что будут включены также некорневые объекты):

!heapstat -iu

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

Вы должны загружать SOS.DLL с помощью команды ".load _FULL_SOS_DLL_PATH_", а не с помощью ".loadby sos clr", потому что обычно устанавливаются разные платформы.NET, поэтому вы должны указать WinDbg загрузить правильную...

Какова ваша целевая структура?

.loadby sos clr 

Команды.net 4, для отладки предыдущей версии 4 попробуйте использовать

.loadby sos mscorwks

Еще одна программа, которую вы можете использовать, которая гораздо проще для начинающих пользователей, чем WinDbg, - это инструмент диагностики отладки (из MSDN): http://www.microsoft.com/en-us/download/details.aspx?id=40336.

Когда я работал с этим, я просто создавал файл дампа, щелкая правой кнопкой мыши по процессу в диспетчере задач.

Другие вопросы по тегам