Мне часто приходится отлаживать приложение на моей работе. Это BI-приложение, которое мы развертываем на предприятиях, включая тестовую среду и производственную среду. Мне интересно, есть ли какие-нибудь приложения / инструменты / методы, которые люди могут предложить, основываясь на этих ограничениях:
Отладчик нельзя использовать на клиентском сайте или локально, поскольку программное обеспечение зависит от пользовательских сторонних приложений, для которых у нас нет тестовых сред. (РЕДАКТИРОВАТЬ: чтобы быть справедливым, в некоторых случаях возможно локальное устранение неполадок. Если мы используем только основной код. Большая часть проблемного кода находится в DLL, которая инкапсулирует сторонние специфические коммуникации: сокеты, каналы процесса, вызовы soap, настраиваемая логика, которая изменяет поведение основного кода. Как правило, во время реализации или расширения для клиента мы будем писать новый код в этой области.)
В наших приложениях практически не ведется логирование. Там нет модульных тестов.
Контроль версий имеет только 1 версию полного решения (с использованием Source Safe 2005). Поэтому невозможно получить предыдущую версию всего решения, только отдельные файлы. (Если кто-то не знает способов обойти это).
Невозможно воспроизвести локально, часто невозможно воспроизвести в тестовой среде (высокая вероятность того, что тестирование и производство не совпадают).
Существует высокая вероятность того, что версия, используемая клиентом, отличается от версии, безопасной для исходного кода. Это связано с тем, что обновляются отдельные файлы, в которые встроена пользовательская логика для этого конкретного клиента. Часто случается, что обновление выполняется в двоичном файле, который требует изменений в нескольких других двоичных файлах, но когда фиксация сделана, ни у кого нет записей или знаний об этом. Я вижу довольно распространенную ошибку: «Функция / метод не найден» или «В вызове метода задано слишком много / слишком мало параметров» в клиентской среде.
Это решение .net VB
Невозможно установить любое программное обеспечение на клиентских сайтах, но можно локально
Наше приложение чрезвычайно настраиваемо, но, к сожалению, логика настройки распространяется на все классы и файлы, от внешнего интерфейса до уровня данных, включая пользовательские изменения, вносимые в базу данных для каждого клиента.
В коде практически нет комментариев. Нет документации об архитектуре. Нет документации о API. Единственное, что у нас есть, это сотни и сотни цепочек электронной почты, которые в некоторой степени объясняют, что происходит. Единственный человек, который знает код, - это те, кто изначально написал его, но, по их словам, они больше не разработчики, поэтому они не так уж сильно вмешиваются.
И прежде чем вы скажете это ... да, я знаю; Я тоже хочу застрелиться. Это не помогает, что есть спагетти-код, сотни предупреждений компилятора и сломанный полиморфизм, которые ДЕЙСТВИТЕЛЬНО должны быть исправлены, но я не имею права голоса в этом.
Наиболее распространенные ошибки, с которыми я сталкиваюсь, - это ошибки нулевых ссылок, неправильные приведения и отсутствующие несоответствия функций / сигнатур функций. Иногда мне везет, и программа просмотра событий регистрирует класс, метод и сообщение об исключении. Это не самое полезное, но это все же что-то. Наихудшими являются ошибки, которые не имеют следов, никаких шагов воспроизведения, кроме скриншота, и являются общими сообщениями об ошибках, такими как упомянутые выше. Иногда невозможно выяснить, почему они произошли, только молиться о том, что среда не настроена должным образом и что она исчезнет позже.
Я знаю, что это звучит как пустяк, и в некоторой степени это так. Но я отчаянно нуждаюсь в вариантах. Есть ли другие методы / инструменты, которые я могу использовать?