Как отладить ошибку .net Fatal Execution Engine? - PullRequest
5 голосов
/ 30 июля 2009

Как разработчик я пытаюсь настроить среду разработки на нашем новом сервере VMWare ESX. Не получается: где-то в мастере настройки продуктов и технологий SharePoint приложение просто исчезает, и в журнале событий обнаруживается следующая ошибка:

.NET Runtime версия 2.0.50727.3082 - Неустранимая ошибка механизма выполнения (7A0979C6) (80131506)

Теперь я знаю, что все это подозрительно похоже на проблему в стиле ServerFault.com (и очень общее сообщение об ошибке, множество похожих обращений в Google), и, конечно, мы решаем проблему таким образом (установка / удаление пакетов обновления / исправлений, разных версий ОС, тестирование отдельных элементов установки, разных настроек для виртуальной машины и т. д.), но из личного интереса я хотел бы получить немного больше понимания проблемы » установите исправление XXYY и надеюсь, что оно исчезнет ". Мне было интересно: Как мне подойти к этой ошибке с точки зрения кодировщиков ?

  • Могу ли я как-нибудь остановить отладчик при возникновении этой проблемы или вручную указать его на указанный адрес (в каком модуле)?
  • Стоит ли пытаться установить и использовать для этого Visual Studio или использовать инструменты низкого уровня, такие как windbg?
  • Что это за коды ошибок точно ? Последний выглядит как ошибка ком. Другой адрес?
  • Можно ли как-нибудь включить более подробные отчеты об ошибках? Неполадка .dll была бы хороша.

Вы можете сказать, что у меня совсем нет опыта отладки на этом уровне в среде .net, но я очень хочу учиться. Любые указатели приветствуются!

p.s. Когда я пытаюсь запустить средство настройки командной строки psconfig для настройки не-пользовательского интерфейса, большинство, если не все команды, вызывают исключение StackOverflowException. Опять же, куда мне идти оттуда?

1 Ответ

8 голосов
/ 30 июля 2009

Краткий ответ: читайте блог Тесс Феррандез . Он содержит множество бесценных советов по отладке приложений .NET и поможет вам сделать это.

Более длинный ответ ...

в Visual Studio

Если у вас установлена ​​Visual Studio, вы можете попробовать взломать любое необработанное исключение .NET. Чтобы включить это, перейдите в меню и выберите «Отладка», «Исключения» и установите флажок «Общеязыковые исключения во время выполнения». Затем перейдите в Инструменты, Параметры, Отладка и снимите флажок Включить только мой код. Наконец, подключитесь к процессу мастера настройки (вам, очевидно, нужно, чтобы он был запущен первым), и отладчик Visual Studio прервется в момент возникновения исключения.

Если предположить, что отладчик прерывается (если он не подключен к неправильному процессу), то у вас должен быть доступ к стеку вызовов, и вы можете сделать некоторые догадки по именам методов о том, что происходит неправильно. Однако есть вероятность, что это запутано, что не поможет. Вы также сможете увидеть текущую инструкцию MSIL, на которой остановился отладчик. Вот тут-то и начинает выходить за рамки меня, но есть хорошие ссылки, которые помогут вам понять, что происходит в коде.

Без Visual Studio

Если у вас нет Visual Studio или по какой-то причине не удается отключить отладчик, то можно создать дамп процесса сбоя. Есть два метода, которые я знаю. Один из них - , описанный командой разработчиков Windows Server Performance с использованием доброго старого доктора Уотсона. Другой - это новый инструмент, только что выпущенный Марком Руссиновичем под названием ProcInfo , который может автоматически создавать дамп процесса, который завершается с ошибкой из-за необработанных исключений. Возможно, есть и другие методы.

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

Наконец

Вернитесь к краткому ответу выше: читайте блог Тесс, чтобы развиваться дальше! Это большая тема, и у нее есть лучшие ресурсы, которые я когда-либо нашел. Также есть хороший пост от Винсента Ротвелла , который может помочь, но он действительно нацелен на отладку собственного кода.

В качестве отступления - вы не должны получать исключения, которые вы есть. Это указывает на довольно серьезную проблему. Я бы посмотрел на коррупцию, серьезные неисправности оборудования и подумал о перестройке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...