2012-07-04 4 views
3

Я пытаюсь создать дамп с использованием windbg каждый раз, когда специфический clr exception is THROWN.Создание дампа ядра в clr exception throw

Я знаю о! Soe, но я не хочу, чтобы выполнение остановилось, я просто хочу, чтобы он создал дамп.

Возможно ли это?

Если это не представляется возможным с помощью WinDbg, я также открыты для других рекомендаций о том, как достичь этого ...

ответ

2

Попробуйте procdump. Возможно, используйте опцию «-e 1», чтобы захватить дамп при исключениях с первым шансом.

Edit:

Для конкретных исключений, вам может понадобиться ADPlus. См. Это, например, post.

Больше редактирует:

Также можно без ADPlus: В Windbg -> Debug -> Фильтры событий, установить исключение CLR для игнорировали - не обрабатываются. Нажмите кнопку Команды и введите следующие (с определенным типом исключения, конечно):

!soe System.ArgumentNullException 1;.if(@$t1==0) {g} .else {.dump /ma /u d:\ANE.dmp} 
+0

Спасибо, я, возможно, не уточнил - когда я сказал «исключение», я имел в виду конкретное исключение, а не когда вызывается какое-либо исключение. Я не думаю, что это возможно с procdump –

+0

@RoyReznik ADPlus может быть тем, что вам нужно. Перейдите по ссылке в моем отредактированном ответе. –

+0

ADPlus работал, но более новая версия требует немного другого синтаксиса, чем сообщение, на которое вы ссылались. Я предлагаю, чтобы тот, кто хочет его использовать, должен перейти на http://www.codeproject.com/Articles/315536/Adplus-handling-managed-exceptions –

1

В WinDbg, «Debug> Event Filters», найти, специфические исключения вы хотите, чтобы выполнить команду для или добавить пронумерованное исключение.

Затем нажмите кнопку «Команды» и введите:

.dump /ma c:\mydump.dmp 

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

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