Подтвердить что ты не робот

Отладка приложений .net без Visual Studio

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

Мне нужно определить внутреннее исключение исключения, созданного на компьютере с установленной инфраструктурой .net, но не Visual Studio (и не возможно установить Visual Studio на компьютер). Как я могу изучить это внутреннее исключение?

Обратите внимание на несколько пунктов:

  • Это не работает с Visual Studio с другого компьютера, поскольку проблема лежит на самом деле; это гейзенбуг первого порядка.
  • Я знаю, что WinDbg - это вариант, но мне нужно это сделать быстро и, к сожалению, я предполагаю, что время, затраченное на то, чтобы узнать, что WinDbg достаточно, чтобы сделать это, перевешивает время, которое у меня есть - однако, если у кого-то есть пошаговые инструкции по этому Мне было бы интересно.
  • У меня есть полные права администратора и вы можете установить все, что не слишком велико (проблема с установкой VS заключается в нехватке места на жестком диске).

Спасибо!

4b9b3361

Ответ 1

У вас был взгляд на MDBG? Это может занять некоторое время, чтобы обойти, но довольно прямолинейно.

Также DbgClr может быть вариантом, я думаю, что его все еще должно быть в SDK где-то.

Ответ 2

На самом деле довольно просто сделать это с помощью WinDbg, если у вас есть аварийный свал. Загрузите дамп в WinDbg, загрузите sos и запустите команду printexception.

>.load sos
>!printexception

Это расскажет вам об исключении, а также укажет на внутреннее исключение. Результат будет примерно таким:

0:000> !printexception
Exception object: 0135b340
Exception type: System.ApplicationException
Message: GetAverage failed
InnerException: System.IndexOutOfRangeException, use !PrintException 01358394 to see more
<stack trace follows>

Если у вас еще нет дампа памяти, вы можете создать его с помощью adplus (который поставляется с WinDbg).

>adplus -crash -o<dump location> -quiet -pn<name of process>

Если вы предпочитаете использовать PID, используйте параметр -p.