Отладка .NET 2.0 Winforms приложения с использованием средств отладки для Windows - PullRequest
3 голосов
/ 05 марта 2010

Я поддерживаю приложение .NET 2.0 Winforms, которое довольно широко развернуто. В редких случаях мы получаем запрос в службу поддержки от клиента, в котором приложение возвращает исключение среды выполнения .NET КАК МОЖНО СКОРЕЕ при попытке запустить приложение.

В прошлом мы помогали клиенту переустанавливать .net framework, и очень часто это работало ... но иногда нет.

В такой ситуации Средства отладки Windows могут использоваться для определения причины проблемы. Если это так, вы ДОЛЖНЫ загрузить символы отладки на целевой компьютер (избегайте этого, поскольку для загрузки на целевой объект может потребоваться несколько сотен МБ).

Это перебор для приложения .net? Любые альтернативы. Как бы вы пошли об отладке этого. Пошаговое руководство будет приветствоваться. Конечно, это приложение скомпилировано как RELEASE-конфигурация на целевой машине. Скорее всего, у клиента НЕ будут установлены инструменты разработки или инструменты отладки. У нас обычно есть удаленный доступ к компьютеру. Повторить. Это происходит КАК МОЖНО СКОРЕЕ, КАК клиент пытается запустить приложение, и оно немедленно терпит неудачу.

Какой самый быстрый путь решения этой проблемы для клиента?

Вот пример недавней ошибки из журнала событий.
EventType clr20r3. .exe P2 2010.1.0.0, p3 4B857AFD P4 BLAH BLAH Система. Инвалидооперация, P10 ноль.

Источник: .NET Runtime 2.0 Ошибка. EventID: 5000

Заранее спасибо.

Сет

Ответы [ 4 ]

6 голосов
/ 06 марта 2010

Почему бы не использовать это?

Для машины клиента вы не сможете выполнять удаленную отладку. Поэтому рекомендуется записывать аварийные дампы для аварийных сбоев и зависающие дампы для проблем с зависаниями, и WinDbg или ADPlus.exe очень полезны здесь.

Попросите вашего конечного пользователя запустить ваше приложение в WinDbg и выполнить

.dump /f path

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

На целевой машине символ не требуется. Символы полезны, когда вы анализируете аварийный дамп на своем компьютере, и здесь полезны такие вещи, как SOS.

Конечно, есть и другие способы получения аварийных дампов,

http://blogs.msdn.com/lexli/archive/2009/08/23/when-the-application-program-crashes-on-windows.aspx

2 голосов
/ 06 марта 2010

Редактировать: только что увидел "происходит сразу при запуске". Действительно, WinDBG может помочь .

Хотя средства отладки для Windows действительно в основном предназначены для собственных приложений, они также полезны для управляемых приложений.Управляемые приложения не только «родные» в конце, когда они выполняются, но также есть, в частности, расширение SOS для WinDBG или CDB (если вы предпочитаете командную строку).

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

Существует много всегоВ этом ответе есть много информации, но вам лучше всего поискать «windbg sos».

Относительно примера, который вы привели

EventType clr20r3..exe P2 2010.1.0.0, p3 4B857AFD P4 BLAH BLAH system.invalidoperation, P10 NIL.

это может быть что-то еще, но для меня это выглядит как необработанное исключение в приложении .NET - вв этом случае System.InvalidOperationException.

Если вы можете получить мини-дамп аварийного приложения (посмотрите на инструмент ADPlus , который является частью инструментов отладки, чтобы получить дамп «по требованию»или «по событию»), затем вы можете загрузить это в WinDBG и использовать расширения SOS (команды! clrstack,! dumpstack,! threads и т. д.), чтобы выяснить, откуда появилось это необработанное исключение.

0 голосов
/ 09 марта 2010

Я написал сообщение в блоге с пошаговыми инструкциями и полезными URL-адресами.

http://www.spearsofttech.com/2010/03/09/how-to-use-debugging-tools-for-windows-to-debug-a-net-application/

Сет

0 голосов
/ 06 марта 2010

Не думаю, что вам нужны «средства отладки Windows».Символы отладки предназначены для ОС, а не для .NET Framework.(Напоминаем, что ваше приложение Windows.Forms находится в .NET Framework, а не в ОС.)

Поможет ли «Удаленная отладка» при http://msdn.microsoft.com/en-us/library/y7f5zaaa.aspx?

Я обычно включаю «StopSwitch», но это не является обязательным требованием для включения JIT.(См. «StopSwitch останавливает выполнение для отладки точно в срок» на http://missico.spaces.live.com/blog/cns!7178D2C79BA0A7E3!309.entry) Это позволяет мне включить коммутатор и подключиться к работающему приложению, когда он попадает в оператор остановки отладчика.

Вы можетеотладка сборок "release". pdb выпуска полезны для трассировки стека.

У меня была эта проблема раньше. Я включил StopSwitch, проверка была первой строкой, но JIT не был запущен, потому что проблема возникла раньше.NET Framework даже загрузил мое приложение.

...