Мое приложение бросает InvalidCastException в среду QA, что-то, что я не могу воспроизвести в разработке.
Я хочу получить мини-дамп в момент исключения. Я знаю о adplus, но я не уверен, как использовать его так, чтобы он создал мини-дамп, когда InvalidCastException брошен. По-видимому, это не отличает одно исключение.NET от другого. Может быть я неправ и существует путь. Или, существует другой инструмент, чтобы сделать это. Предпочтительно освободите тот.
Так или иначе может кто-либо совет, как обработать эту проблему?
Спасибо.
ОБНОВЛЕНИЕ
ОБНОВЛЕНИЕ 2
На самом деле я "украл" код поколения мини-дампа из John robbins SuperAssert. Сеть Снова, это - код для генерации мини-дампа от определенной конкретной точки, тогда как мне нужен более гибкий подход в стиле adplus. Подход John Robbins, создают cdb сценарий и затем вызывают cdb отладчик с тем сценарием, чтобы заставить его присоединить к процессу и создать дамп. Это не использует MiniDumpWriteDump API.
Это возможно, вам нужно .load sos.dll в вашем скрипте ADPlus. В этой статье блога показано, как это сделать.
Остерегайтесь сомнительных радостей отладки управляемого кода из минидампа. Если вы сталкиваетесь с трудно диагностируемыми исключениями, пока код находится в QA, вы столкнетесь с ними снова, когда он перейдет в продакшн. Тогда к ним добавятся драконы, дышащие огнем. Позаботьтесь о хорошем протоколировании необработанных исключений, написав обработчик события для AppDomain.UnhandledException. Логирование e.ExceptionObject.ToString() дает много информации.
Самый простой способ - позволить ему полностью выйти из приложения, позволить пользователю сообщить об этом в Microsoft и зарегистрироваться в системе отчетов об ошибках Windows.
Кроме того, вы можете захватить его вручную, используя SUPERASSERT .NET Джона Роббинса (или подмножество его кода).
ОБНОВЛЕНИЕ (для решения, не связанного с кодом): Взгляните на System Internals ' ProcDump .
Возможно, вы хотите использовать 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)