2012-05-14 3 views
2

У нас есть исключение из нашего приложения. Используя Dr.Watson, мы не записывали файлы dmp, а также файлы журнала. Мне сказали, что WinDbg является альтернативой созданию файлов дампа при исключении/сбое программы. После гуглинга я столкнулся с грудами замешательства. Прежде всего, я хотел бы подтвердить, возможно ли, создавать файлы дампа с помощью WinDbg. Во-вторых, есть ли какие-либо рекомендуемые простые командные строки для присоединения WinDbg к приложению для получения файлов дампа при его сбое? Большое спасибо!WinDbg для создания файла дампа при сбое?

+0

FYI: наиболее вероятной причиной недостаточного файла дампа от Доктор Ватсон не включает кучу в составе свалки. Вы должны рассмотреть возможность включения этого для проблемных ошибок. – JaredPar

+0

@ JaredPar Я не понимаю вашего предложения. Обычно в опциях Dr.Watson входят: «Таблица символов дампа», «Дамп всех контекстов потока» ... – user1154138

+0

Я никогда не использовал административную сторону доктора Уотсона, я только что использовал результаты :). – JaredPar

ответ

1

Если вы можете перехватить сбой в обработчик исключений, то вы можете написать дамп с помощью кода: http://msdn.microsoft.com/en-us/library/windows/desktop/ms680360%28v=vs.85%29.aspx

В противном случае вам нужно поручить доктор Уотсон, чтобы перехватить и создать дамп для вас с определенными флагами, которые определяют уровень детализации отвалы проведет: http://blogs.technet.com/b/askperf/archive/2007/06/15/capturing-application-crash-dumps.aspx и http://social.technet.microsoft.com/wiki/contents/articles/8103.application-crash-dump-analysis-windows-7.aspx и msdn

чтобы сделать это из командной строки, вам нужно сделать что-то вроде:

cdb -pn myApp.exe -c ".symfix;.reload;.dump /ma c:\memdump\crash.dmp;qd" 

Это предполагает, что cdb.exe путь поиска, вам может понадобиться префикс полного пути, как:

C:\Program Files (x86)\Debugging Tools for Windows (x86)\cdb -pn myApp.exe -c ".symfix;.reload;.dump /ma c:\memdump\crash.dmp;qd" 

Так команды здесь

cdb -pn -->attaches cdb to your process name myApp.exe 
-c  -->execute command 
.symfix -->fix microsoft symbols 
.reload -->reload 
.dump /ma c:\memdump\crash.dmp --> write minidump to location (the flags /ma is effectively everything you want) 
qd  -->quit and detach 

Вам не нужно некоторые из этих команд могут удалить их, если они не нужны.

+0

Большое вам спасибо. Это командная строка для захвата файлов дампа при сбое? – user1154138

+0

Это команда, которая будет прикреплять и выполнять дамп памяти, но вам все равно нужно настроить обработчик в реестре, если вы проверите ссылки – EdChum

2

Choosing the Best Tool подтверждает, что WinDbg поможет вам создавать файлы дампа, но также предоставляет некоторые альтернативы, которые могут быть проще в использовании.

2

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

mkdir c:\dumps 
procdump -e -c 10 -w myprocess.exe c:\dumps 

Когда процесс генерирует необработанное исключение будет создать файл дампа в каталоге c:\dumps, что вы можете загрузить в Visual Studio или Windbg (команда !analyze -v ваш друг)

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