Используем WinDbg для поиска причины падения w3wp.exe

24
Янв
2014
Category: Windows   /   Tags: , ,

Выкатили свежее веб приложение, которое себя отлично вело на предпродакшн серверах, а оно начало «крашить» w3wp.exe. Пытались «оддебажить» Debug Diagnostic Tool v2.0, но никаких результатов вменяемых мы не получили. И вот в один прекрасный день (пытница + з/п) я наткнулся на замечательную статью и уже из нее узнал о существовании WinDbg. Дальнейший поиск вывел меня на еще одну статью.
IIS складывает дампы в папку c:\ProgramData\Microsoft\Windows\WER\ReportQueue\ и там уже AppCrash_w3wp.exe_<некий хеш> в которой находятся файлы, например:
WER87FF.tmp.dmp
WER4CC3.tmp.hdmp
WER4C63.tmp.appcompat.txt
Report.wer
WER4CB2.tmp.WERInternalMetadata.xml

Для отладки запускаем установленную WinDbg и дальше Ctrl+D (File — Open crash Dump…) и указываем файл с расширением .hdmp.
Открывшийся дамп предстает перед нами в таком виде:
WinDbg: Load dump

Подгружаем SOS модули для .NET
Для .NET 2.0 | 3.0 | 3.5

Для .NET 4.0

Для вывода Stack Trace вводим команду:

и получаем вывод типа:
WinDbg: Stack Trace

Для вывода потоков вводим команду:

и получаем список потоков:
WinDbg: Threads

В этом списке потоков я обнаружил строку:

Вот он тот самый «эксепшн» StackOverflow который мы и искали.
«Открываем» нужный нам поток командой:

А теперь смотрим что у него внутри:

и начинаем анализировать вывод:
WinDbg: Просмотр стека

Скачать WinDbg

WinDbg 6.12.0002.633 (x64)
WinDbg 6.12.0002.633 (x86)

Яндекс.Метрика