Как создать мини-дамп процесса.NET, когда определенное первое случайное исключение происходит

Мое приложение бросает InvalidCastException в среду QA, что-то, что я не могу воспроизвести в разработке.

Я хочу получить мини-дамп в момент исключения. Я знаю о adplus, но я не уверен, как использовать его так, чтобы он создал мини-дамп, когда InvalidCastException брошен. По-видимому, это не отличает одно исключение.NET от другого. Может быть я неправ и существует путь. Или, существует другой инструмент, чтобы сделать это. Предпочтительно освободите тот.

Так или иначе может кто-либо совет, как обработать эту проблему?

Спасибо.

ОБНОВЛЕНИЕ

  1. Сборкой является Отладочная сборка и в QA и в dev. Однако QA выполняет сложные сценарии, сделанные возможными в лаборатории, которую не может воспроизвести devs. Следовательно мне нужна способность сделать дамп при выполнении в QA.
  2. Я могу изменить код и создать мини-дамп из кода. Однако я хочу для более гибкого решения, одно не требование изменить код каждый раз, когда проблема как это происходит.

ОБНОВЛЕНИЕ 2

На самом деле я "украл" код поколения мини-дампа из John robbins SuperAssert. Сеть Снова, это - код для генерации мини-дампа от определенной конкретной точки, тогда как мне нужен более гибкий подход в стиле adplus. Подход John Robbins, создают cdb сценарий и затем вызывают cdb отладчик с тем сценарием, чтобы заставить его присоединить к процессу и создать дамп. Это не использует MiniDumpWriteDump API.

5
задан mark 9 June 2010 в 13:13
поделиться

3 ответа

Это возможно, вам нужно .load sos.dll в вашем скрипте ADPlus. В этой статье блога показано, как это сделать.

Остерегайтесь сомнительных радостей отладки управляемого кода из минидампа. Если вы сталкиваетесь с трудно диагностируемыми исключениями, пока код находится в QA, вы столкнетесь с ними снова, когда он перейдет в продакшн. Тогда к ним добавятся драконы, дышащие огнем. Позаботьтесь о хорошем протоколировании необработанных исключений, написав обработчик события для AppDomain.UnhandledException. Логирование e.ExceptionObject.ToString() дает много информации.

2
ответ дан 13 December 2019 в 22:02
поделиться

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

Кроме того, вы можете захватить его вручную, используя SUPERASSERT .NET Джона Роббинса (или подмножество его кода).

ОБНОВЛЕНИЕ (для решения, не связанного с кодом): Взгляните на System Internals ' ProcDump .

5
ответ дан 13 December 2019 в 22:02
поделиться

Возможно, вы хотите использовать MiniDumpWriteDump API в своем приложении на C#? Посмотрите на http://blog.kalmbach-software.de/2008/12/13/writing-minidumps-in-c/ пример кода или поищите в Internat по MiniDumpWriteDump и C#.

Если вы используете Visual Studio 2010, вы можете загрузить minidump прямо в Visual Studio (см. http://msdn.microsoft.com/en-us/library/d5zhxt22(v=VS.100).aspx)

3
ответ дан 13 December 2019 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: