Есть ли способ отладить уже работающее приложение, скомпилированное в режиме выпуска?
-
22-08-2019 - |
Вопрос
У меня есть служба dotnet windows, которая сейчас зависла, но работает.Есть ли к нему как-нибудь прикрепить отладчик, несмотря на отсутствие символов;и что он уже запущен?
Решение
Не обращайте внимания на предупреждение «нет символов».Как только у вас будет подключен собственный отладчик (я предпочитаю WinDbg для подобных вещей), загрузите пакет инструментов SoS:
.loadby sos mscorwks
Теперь вы можете получить управляемый стек вызовов, используя !clrstack
и надеемся, что это даст вам достаточно информации, чтобы разобраться в зависании.Вот удобная шпаргалка с несколькими другими, если это вас не устраивает.
На этот раз это тебе не поможет, но...выработайте привычку включать генерацию файла символов для отладки и сборки в режиме выпуска.Нет причин не делать этого, и в подобных ситуациях это немного облегчит вам жизнь.
Другие советы
От MS Dev IDE Debug -> Processes -> Прикрепите (после выбора процесса.) Вам, возможно, придется щелкнуть поле «Показать системные процессы».Хотя полезной информации может и не быть...
Вот пример кода, ссылки на инструменты и презентации по как отладить зависший процесс .NET.
Вы, наверное, тоже захотите посмотреть эта видеопрезентация, в котором используются те же инструменты и образцы.Несмотря на шведский текст на веб-странице, видео на английском языке.