Как отладить приложение в среде клиентов .NET - PullRequest
3 голосов
/ 13 июля 2009

У нас есть приложение, написанное на C # .NET, которое в настоящее время используется в производственных средах. Очевидно, используется сборка релиза.

К сожалению, иногда приложение работает неправильно при определенных условиях, и мы не можем понять, почему. Мы не можем воспроизвести проблему в доме. Да, больше трассировки помогло бы, но часто после того, как вы понимаете, что нужно было внедрить больше трассировки.

Каков наилучший способ отладки этой установки с использованием обычной построчной отладки типа Visual Studio Attach-to-Process. Можно ли установить экспресс-версию VS на компьютере клиента и заменить dll отладочными версиями? Достаточно ли просто отправить PDB и конкретные исходные файлы? Есть ли способ лучше? Конечная цель - создать среду, подобную разработке, для устранения проблемы.

Ответы [ 4 ]

7 голосов
/ 13 июля 2009

Удаленная отладка - это хорошая функция, но ее редко можно использовать в производственных средах, поскольку она требует двухстороннего доверия между доменами (вашим и вашими клиентами), чего трудно достичь (администраторы обеих компаний будут категорически против идеи )

см. Удаленная отладка между доменами

Однако отправка файлов PDB с вашим приложением поможет. Вы можете попросить своих клиентов использовать Clr Debugger ( DbgCLR.exe ). Он имеет некоторые ограничения по сравнению с VS Debugger, но все же это отладчик, который может выполнять эту работу, и он является частью .NET SDK. Если проблема не может быть устранена с помощью отладчика Clr, клиенты могут попытаться установить пробную версию VS в своей производственной среде и предоставить вам подключение к удаленному рабочему столу (если администраторы позволят вам сделать это). Я полагаю, что 90-дневного пробного периода будет достаточно для решения проблемы

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

Однако мой опыт показывает, что в 50% случаев такие «невоспроизводимые» ошибки в .NET происходят из-за одновременного доступа нескольких пользователей (взаимоблокировки, условия гонки, логическое неправильное поведение в сценариях «Первые победы» и «Последние победы»). В большинстве случаев это ошибки, которые вы не сможете отладить, даже если вы устанавливаете VS на клиентском компьютере (если вы запускаете его в нерабочее время), потому что вам нужно запустить как минимум 2 клиента на разных компьютерах одновременно.

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

2 голосов
/ 13 июля 2009

Во-первых, убедитесь, что вы развернули PDB с приложением (достаточно выпустить PDB). Затем, если вы установите и запустите удаленный отладчик Visual Studio на рабочем компьютере, вы сможете отлаживать его с локального компьютера. Файлы PDB приложения на развернутой машине должны соответствовать вашей локальной версии, поскольку я не думаю, что удаленный отладчик выполняет какую-либо синхронизацию.

0 голосов
/ 03 марта 2011

Я предлагаю вам использовать блоки приложений обработки исключений из Enterprise Library Используя это, вы можете записывать свои сообщения об ошибках в свою электронную почту / базу данных / текстовые файлы и т. Д. И т. Д. Так что вы можете точно выяснить причину ошибки.

http://www.codeproject.com/KB/aspnet/ExceptionHandling.aspx

0 голосов
/ 13 июля 2009

используйте сообщения о состоянии и файлы журнала, чтобы хотя бы идентифицировать строку кода, вызвавшую ошибку.

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