Получение аварийных дампов рабочего процесса IIS

Я делаю что-то плохое в моем ASP.NET app. Это может быть любое количество библиотек CTP, которые я использую, или я просто не распоряжаюсь чем-то должным образом. Но когда я передислоцирую ASP.NET для установки Vista IIS7 или установки IIS6 моего сервера я сбой рабочего процесса IIS.

я сузил проблему до моего http-искателя, который является многопоточным зверем, который сканирует сайты для полезной информации, когда его просят. После запуска искателя и повторного развертывания приложения сверху, а не изящно выгружая appDomain и перезагружая, рабочий процесс IIS аварийно завершит работу (появится сообщение о сбое) и продолжит перезагрузку домена приложения.

когда произойдет этот сбой, где я могу найти аварийный дамп для анализа?

3 ответов


скачать инструменты отладки для Windows: http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx

Debugging Tools for Windows имеет скрипт (ADPLUS), который позволяет создавать дампы при сбое процесса: http://support.microsoft.com/kb/286350

команда должна быть чем-то вроде (Если вы используете IIS6):

cscript adplus.vbs -crash -pn w3wp.exe

эта команда присоединит отладчик к рабочему процессу. Когда произойдет сбой он будет генерировать дамп (a *.Файл DMP).

вы можете открыть его в WinDBG (также входит в инструменты отладки для Windows). Файл > открыть аварийный дамп...

по умолчанию WinDBG покажет вам (рядом с командной строкой), что поток был разбит процессом.

первое, что вам нужно сделать в WinDBG, это загрузить расширения .NET Framework:

.loadby sos mscorwks

затем отобразится управляемый callstack:

!clrstack

если поток не был запуск управляемого кода, затем вам нужно будет проверить собственный стек:

kpn 200

это должно дать вам некоторые идеи. Чтобы продолжить устранение неполадок, рекомендуется прочитать следующую статью:

http://msdn.microsoft.com/en-us/library/ee817663.aspx


быстрый поиск нашел IISState - он полагается на средства отладки Windows и должен работать, когда происходит сбой, но, учитывая обстоятельства, которые вы описали, это не должно быть проблемой,


вы также можете использовать DebugDiag для этого

отличное объяснение можно найти здесь:

http://blogs.msdn.com/b/tess/archive/2009/03/20/debugging-a-net-crash-with-rules-in-debug-diag.aspx