Диагностика моего управляемого приложения .Net дает сбой правильно

1

Я дошел до того, что проекты, которые я писал, пробиваются в дикую природу (woo), и люди возвращаются с событиями сбоя приложений, которые я хочу исправить. Теперь я не могу сказать, что на компьютерах, на которых работают мои программы, есть доступные инструменты для разработки или диагностики, поэтому мой вопрос таков:

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

Примером журнала, который я получил, является:

Problem signature:
  Problem Event Name:    CLR20r3
  Problem Signature 01:    SarkAgent.exe
  Problem Signature 02:    0.0.0.0
  Problem Signature 03:    509a4197
  Problem Signature 04:    mscorlib
  Problem Signature 05:    4.0.30319.34014
  Problem Signature 06:    52e0b679
  Problem Signature 07:    451e
  Problem Signature 08:    13c
  Problem Signature 09:    System.UnauthorizedAccess
  OS Version:    6.3.9600.2.0.0.256.48
  Locale ID:    2057
  Additional Information 1:    5861
  Additional Information 2:    5861822e1919d7c014bbb064c64908b2
  Additional Information 3:    d1d9
  Additional Information 4:    d1d94a13d3609d6b740644c12508f581

теперь некоторые вещи, которые я знаю:

Подпись 1 (мое имя приложения, revoloutionary, я мастер для этого)

Подпись 2 (моя версия приложения)

Подпись 4 (библиотека, из которой возникла ошибка)

Подпись 5 (эта версия библиотеки)

Подпись 9 (управляемая ошибка, которая была выбрана)

поэтому в основном все очевидные вещи, которые я могу решить. и все шестнадцатеричные значения, которые я не знаю, что с ними связано. Если мы возьмем эту ошибку в качестве нашего тестового примера, как мне определить, какая часть моего кода вызвала ошибку boo?

Любые атрибуты из msdn или других о том, что каждая сигнатура проблемы действительно относится, также могут быть полезными. (:

Это полный профиль.net 4.0. В любом учебнике, который дает мне ссылку на "mscorwks.dll", я вместо этого пишу "clr.dll". Еще не радость.

Изменение: я продвинулся дальше до точки, где windbg теперь загружает sos должным образом после выполнения программы. при запуске:

0:005> !token2ee mscorlib 0600451e
c0000005 Exception in C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos.token2ee debugger extension.
  PC: 00007ffa'c7a50c05  VA: 00000000'00000000  R/W: 0  Parameter: 00000000'00000000

Редактирование 2: я продвинулся еще дальше до точки, где windbg теперь показывает мне токены в сборке. проблема в том, что ИЛ не существует... Возникает путаница. Чтобы заставить его работать, я запускаю приложение, обеспечиваю загрузку последних.pdb с помощью

!sym -noisy
.symfix
.reload -f

Затем я запускаю мой.loadby sos clr, который загружает модуль "sos" правильно сейчас. при запуске! token2ee mscorlib.dll 0600451e (дважды, спасибо dono), я верну это:

Module:      00007ffac32e1000
Assembly:    mscorlib.dll
Token:       000000000600451e
MethodDesc:  00007ffac34e1f40
Name:        System.IO.__Error.WriteNotSupported()
JITTED Code Address: 00007ffac3fb8150

при запуске! dumpil 00007ffac34e1f40 логика диктует, что я должен найти IL_013c, но я этого не делаю, я получаю:

ilAddr = 00007ffac3a545f7
IL_0000: ldstr "NotSupported_UnwritableStream"
IL_0005: call System.Environment::GetResourceString
IL_000a: newobj System.NotSupportedException::.ctor
IL_000f: throw 

Это также приводит меня к тому, что я отлаживаю "неудавшийся модуль", который является библиотекой, упакованной в окна. и ИЛ, который возвращается, кажется, является внутренним метателем, который имел бы смысл в функции, называемой "WriteNotSupported()". Есть ли способ найти подпись метода, с которой столкнулась хост-сборка (.exe), чтобы вызвать сбой (или созданная функция, в которой произошел сбой, или... что-либо, относящееся к моей программе)

  • 0
    связанные: stackoverflow.com/questions/3040134/…
  • 0
    Вероятно, вы получаете ошибку SOS: stackoverflow.com/questions/25183295/… Просто запустите ее снова. Или используйте IlDasm для поиска 0600451e.
Показать ещё 3 комментария
Теги:
clr

1 ответ

1

Взгляните на это сообщение в блогах MSDN: отчет об ошибках Windows и интеграция с CLR

  • 0
    Эй, windbg не может найти mscorwks, я попробовал несколько вещей, которые я нашел в Интернете об использовании этого. Я скопировал mscorwks.dll в папку, в которой находится windbg, убедился, что она доступна, а также выписал полный путь к ней, когда закончил .loadby SOS. Что я должен сделать, чтобы mscorwks.dll был найден, когда windbg ищет его?
  • 0
    Кроме того, я запустил windbg в 64 и 32 битах, 64 бит позволяет мне загружать как mscorwks, так и sos, но при попытке! Token2EE он сообщает, что mscorwks не загружен. Отладка головных болей 101

Ещё вопросы

Сообщество Overcoder
Наверх
Меню