Получение аварийных дампов рабочего процесса IIS
-
09-06-2019 - |
Вопрос
Я делаю что-то плохое в своем приложении ASP.NET.Это может быть любое количество библиотек CTP, которые я использую, или я просто неправильно что-то размещаю.Но когда я повторно развертываю свой ASP.NET для установки Vista IIS7 или IIS6 на моем сервере, происходит сбой рабочего процесса IIS.
Я сузил проблему до моего HTTP-сканера, который представляет собой многопоточное устройство, которое сканирует сайты в поисках полезной информации по запросу.После того, как я запущу поисковый модуль и повторно разверну приложение поверх, вместо того, чтобы изящно выгружать AppDomain и перезагружать, рабочий процесс IIS завершится сбоем (появится сообщение о сбое) и продолжит перезагрузку домена приложения.
Когда произойдет этот сбой, где я могу найти аварийный дамп для анализа?
Решение
Скачать средства отладки для Windows:http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx
В Debugging Tools для Windows есть скрипт (ADPLUS), который позволяет создавать дампы при СБОЕ процесса:http://support.microsoft.com/kb/286350
Команда должна быть примерно такой (если вы используете IIS6):
cscript adplus.vbs -crash -pn w3wp.exe
Эта команда подключит отладчик к рабочему процессу.Когда произойдет сбой, он сгенерирует дамп (файл * .DMP).
Вы можете открыть его в WinDbg (также входит в состав средств отладки для Windows).Файл> Открыть аварийный дамп...
По умолчанию WinDbg покажет вам (рядом с командной строкой) поток, в котором произошел сбой процесса.
Первое, что вам нужно сделать в WinDbg, это загрузить расширения .NET Framework:
.loadby sos mscorwks
затем вы отобразите управляемый стек вызовов:
!clrstack
если поток не запускал управляемый код, то вам нужно будет проверить собственный стек:
kpn 200
Это должно натолкнуть вас на некоторые идеи.Чтобы продолжить устранение неполадок, я рекомендую вам прочитать следующую статью:
Другие советы
Быстрый поиск позволил найти Iisгосударство - это зависит от Средства отладки Windows и должен запускаться при возникновении сбоя, но, учитывая обстоятельства, которые вы описали, это не должно быть проблемой,
Вы также можете использовать DebugDiag для этого
Отличное объяснение можно найти здесь:
http://blogs.msdn.com/b/tess/archive/2009/03/20/debugging-a-net-crash-with-rules-in-debug-diag.aspx