2017-01-11 6 views
0

У меня есть приложение C#, работающее на Windows Server, работающем как служба. Недавно я представил утечку памяти в приложении, и он несколько раз разбился с OutOfMemoryException с. Эти сбои генерировали отчеты WER и файлы дампа. Есть два файла дампа, triage.dmp и memory.hdmp. Я могу открыть triage.dmp просто отлично и посмотреть на состояния потока, но у него нет никакой информации о памяти приложения. Я хотел бы открыть memory.hdmp, но я не могу, используя как Visual Studio, так и Windbg. Я получаю сообщение о том, что файл поврежден. Это произошло для нескольких файлов memory.hdmp.Не удается открыть файл HDMP

Есть ли какой-то трюк для открытия этих файлов или они действительно повреждены? Если они есть, есть ли какая-то конфигурация, необходимая для Windows для создания допустимых файлов hdmp? У memory.hdmp даже есть информация, которую мне нужно будет отлаживать утечку памяти?

Заранее благодарим за помощь!

+0

Я нашел 3 HDMP файлов на диске и их можно было открыть в WinDbg 10.0.10586.567. Какую версию вы используете? –

ответ

1

Использование файлов Windbg, hdmp - это, как правило, полные отвалы памяти, собранные WER, когда есть исключение без обработки. Вы можете загрузить отладчик с помощью

Getting windbg without the whole WDK?

Если это на основе .NET Управляемое приложение после того, как вы установили путь по SYMBOL умолчанию

! ре -nested

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

! EEHeap -gc

Если вы хотите, чтобы копаться определенного типа потребляющего памяти

! DumpHeap -stat

Для кучи пользовательского режима вы можете запускать

! адрес -summary

Для получения дополнительной информации кучи

! кучного -a

Для получения конкретной кучи

! ч eap -x

Я думаю, я пропустил аспект windbg. Debug diag или procdump могут помочь в сборе действительного аварийного дампа.

ProcDump -e -w -т (имя процесса)/Pid

Если сделать трюк.

Вы можете использовать ProcDump в качестве замены для WER, а

ProcDump -ma -i

Подробнее @https://technet.microsoft.com/en-us/sysinternals/dd996900.aspx

Надеется, что это помогает

+1

Я думаю, что OP знает, что такое WinDbg. Он сказал, что получил сообщение об ошибке «файл поврежден» –

+0

Мой плохой не читал часть windbg. Если windbg говорит, что он коррумпирован, вероятно, это завораживает. Используйте procdump или debug diag для сбора дампов. – Addy

+0

@ Addy ya выглядит просто плохо. Попробуем procdump в следующий раз, чтобы получить дамп. Благодаря! – shortspider