2010-12-03 3 views
0

Я бы хотел выполнить аварийный сброс запущенного процесса .Net, который на самом деле не разбился, для последующей отладки. Как я могу это сделать?Как захватить запущенный процесс .Net на диск?

Это приложение .Net 4, работающее в Windows 2k3.

+0

Minidump отладки для управляемого приложения сосет камни размером с Скалистые горы валуны. Вы должны быть в отчаянии. Прикрепление управляемого отладчика намного превосходит. Но попробуйте, google sos.dll – 2010-12-03 21:45:47

ответ

1

Обновление: В этот момент я бы рекомендовал использовать procdump, потому что он поддерживает множество дополнительных опций для того, когда следует записывать дамп.

Для аварийного сброса ваш лучший вариант, вероятно, adplus от Debugging Tools for Windows. Он автоматизирует прикрепление отладчика cdb и создает файл дампа, когда происходит необработанное исключение (исключения). Вы даже можете поручить ему создавать дампы для всех исключений первого шанса, если вам это нужно. Синтаксис прямо вперед, так, чтобы взять аварийный дамп вызова процесса app.exe вы могли бы сделать что-то вроде

adplus -crash -pn app.exe -o <output dir> 

После того, как у вас есть дамп, вы можете загрузить его в WinDbg, загрузить SOS и посмотреть, за исключением использования команды !threads и !printexception.

Если вам интересно, есть несколько видеороликов на канале 9 с отладочными демонстрациями. Одна из демонстраций - свалка.

http://channel9.msdn.com/posts/MDCC-TechTalk-Advanced-NET-Debugging-part-1

http://channel9.msdn.com/posts/MDCC-TechTalk-Advanced-NET-Debugging-part-2

(Полное раскрытие: Я ведущий в видео, так что простите за бесстыдный штепсель).

1

Вы можете использовать windbg для создания дампа памяти.

См. this запись в блоге о том, как это сделать.

0

Я установил denbugging инструменты для окна и использовать ADPlus с установкой -hang

+0

Дамп зависания даст вам мгновенный снимок процесса. Это может быть очень полезно во многих случаях, но, как правило, это не поможет вам устранить крах. Для этого более полезным является аварийный сброс. – 2010-12-03 21:36:50

0

Вы можете использовать Process Dumper сделать это для любого процесса пользовательского режима. Процесс Режим

Пользователь Хранитель (Userdump) свалки любого запущенного Win32 процессов памяти изображения на лету, не подключая отладчик или прекращения целевых процессов.

Я думаю, что отладка дампов, сгенерированных таким образом, ограничивается WinDbg. Вы не сможете полностью использовать Visual Studio. Существует информация here о посмертной отладке дампов из управляемых приложений.

Смежные вопросы