Как мы можем взять мини-дамп во время исключений - PullRequest
1 голос
/ 27 сентября 2010

Я работаю над подпроектом (.NET), который занимается исключениями.Ниже приведены мои требования

При возникновении исключения сборка исключений должна захватывать

  1. Информация о процессоре
  2. Метод, вызвавший проблему
  3. Данныевызвало проблему
  4. Сведения об окружении (путь и другая информация)

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

Данные могут храниться где угодно в теле метода.это могут быть параметры метода, локальные переменные, объекты и т. д. Я полагаю, что в .Net нет интерфейса, который мог бы отображать данные в памяти во время исключения.поэтому я думал о том, чтобы взять мини-дамп во время исключения.Можно ли в .Net создавать мини-дампы.

Моя программа env есть..Net 3.5, WCF, Silverlight

Передайте мне несколько ссылок.

спасибо

Ответы [ 3 ]

1 голос
/ 27 сентября 2010

Я написал управляемое консольное приложение, которое вызывает собственный API для создания мини-дампов.Я разместил это здесь: Полный код Minidump

Это на самом деле довольно легко.Самое сложное на самом деле, это просто определить, какое имя вы хотите назвать своим файлом минидампа.

1 голос
/ 27 сентября 2010

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

Предполагается, что Visual Studio 2010 поддерживает это, согласно информации здесь .

Отладчик Visual Studio 2010 может читать файлы дампа, которые содержат информация об управляемом коде, неуправляемый код или смесь того и другого. Вы можете отлаживать как родной, так и управляемый дампы с использованием обычной отладки окна.

К вашему сведению, вы можете настроить Process Dumper , чтобы запускать дамп процесса для выбранных собственных исключений - хотя не уверен, как это работает в управляемом процессе. Я не вижу причин, по которым собственное исключение не будет вызывать дамп точно так же, поскольку оно происходит вне области действия CLR (в стековом кадре собственного кода), а также почему такой дамп не может быть обработан в VS2010.

0 голосов
/ 27 сентября 2010

Вы можете использовать PInvoke для вызова Windows API для создания мини-дампов.

Как создать минидамп для моего процесса при его сбое?

http://msdn.microsoft.com/en-us/library/ms680360(v=VS.85).aspx

...