Как я могу видеть код C #, который вызвал CrashDump в CLR.DLL?

StackOverflow https://stackoverflow.com/questions/3319782

  •  28-09-2020
  •  | 
  •  

Вопрос

У меня есть приложение Windows Forms (.NET 4), которое работает нормально на моей машине для разработки, но сбивает сбой на двух других тестовых машинах.Я могу загрузить мини-ванс, который он создает в VS2010.

Выбор «отладки со смешанными» приводит к тому, что, по-видимому, не бесконечно (я убил Девенв примерно через 20 минут) злоупотребление процессором по Visual Studio.

Когда я «отладил только с родным», он не может найти источник (даже если я отражал источник в той же папке, что и на тестовой машине).Это просто говорит:

Необработанное исключение в 0x793F5B8C в yourwinapp .exe.hdmp: 0xc0000409: 0xc0000409.

а затем показывает мне

Расположение стека вызовов: clr.dll! 793f5b8c ()

Как бы я узнал, что вызывает сбой приложения?Могу ли я взять полный Craftump, пока отображается диалоговое окно «Уведомление Microsoft», и это поможет?

Это было полезно?

Решение

Отладка miniDump должна быть улучшена в VS2010. Еще не видели много доказательств для этого, отладки смешанного режима выглядит как неловко, как раньше, когда я сделал несколько быстрых тестов. Не принимайте мое слово для этого, хотя. ТОЛЬКО СОДЕРЖАЕТСЯ, ТОЛЬКО НИКОГДАЦИЯ НИКОГДА не понадобится вам управляемого стека вызовов.

Справиться с этим на источнике. Напишите обработчик событий для AppDomain.CurrentDomain.unhandledException и зарегистрируйте его в вашем Main () методе. Пусть он отображает значение E.ExceptionObject.toString () в, скажем, окно сообщения. Это дает вам управляемый стек следа исключения. Хотя это окно сообщений отображается, вы также можете защепить MiniDump, чтобы привести вас к ближе к расположению аварии.

Особое исключение, которое вы получаете, однако, определенно указывает на нативный код C / C ++. Переполнение буфера, который повреждает стек. Убедитесь, что у вас есть файлы .pdb для любого нативного кода вашего приложения. И настройте сервер Microsoft Symbol Server, чтобы вы получили хороший родной трассировку стека от MiniDump.

Редактировать: тот факт, что вы не получаете undandledexexception, определенно указывает на проверку целостности стека в ЭЛТ. Он был разработан для не поднять исключение, но немедленно прекращайте программу. Необходимое поведение, потому что стек скомпрометируется, код не может предположить, что он может быть безопасно расстегнут. Учитывая расположение аварии, вполне вероятно, что этот чек действительно выполняется в CLR-коде. Я знаю, что это не было сделано в предыдущих версиях CLR, но это может отличаться в версии CLR, включенной с .NET 4.0

Это будет довольно сложно получить след управляемого стека. Есть много, что вы можете отменить инженер-инженер из ненужной трассы стека, пока вы устанавливаете сервер символа, чтобы вы получите имена идентификаторов из кадров стека CLR. Разместите этот след стека в своем вопросе, если вы хотите помочь интерпретации. Ошибка в коде CLR не вряд ли, кстати, вы можете рассмотреть возможность вызова поддержки Microsoft. Однако им нужна последовательная репродушка. Они могут сделать это все важные трассы стека, если REPRO трудно прийти. Настройте Symbol Server, чтобы получить хороший ненужную трассировку стека. Легко в VS2010: Инструменты + варианты, отладки, символы, галочка «Серверы символов Microsoft».

Другие советы

Вы настраиваете procdump , чтобы получить полный дамп памяти, если приложениеимеет необработанное исключение, которое вы можете отладить его в VS или WINDBG

и miniDump имеет информацию о стенке вызовов как ведра Watson, вот одна из CLR Team, и я писал о То же самое

Краткое объяснение информации о данных Watson Bucket, которую вы видите в просмотру событий для необразованного исключения

  1. exefilename
  2. exe assion версия
  3. Timestamp exe assurant
  4. Полное имя
  5. Обратная версия монтажа
  6. Образующийся момент вспомогательной агрегаты
  7. Образующийся метод монтажа Def
  8. Обработный метод IL Инструкция, вызванная исключением
  9. Тип исключения
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top