Какова процедура отладки ошибки только для производства?

Позвольте мне сказать заранее, что я так не осведомлен об этой теме, что я даже не знаю, имеет ли этот вопрос объективные ответы или нет. Если это закончит тем, что было "не", то я буду удалять или голосовать для закрытия сообщения.

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

Таким образом, какова процедура того, чтобы разыскать проблему, которая происходит только на производственных машинах? Существует ли стандартная методология или возможно категория/семейство инструментов, для этого?

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

Править:
Ответу на это до сих пор, кажется, подводит итог одно слово: вход. Одна проблема с входом - то, что он требует предусмотрительности. Что, если ситуация подходит в существующей системе с плохим входом, или клиент волнуется по поводу уязвимых данных и не хочет обширные системы регистрации в системе во-первых?

Некоторые связанные вопросы:
Тестовые учетные записи и продукты в производственной системе
Запущение теста на Производственном Коде/Сервере

14
задан Community 23 May 2017 в 11:59
поделиться

6 ответов

В дополнение к ведению журнала, которое бесценно, вот некоторые другие методы, которые я и мои коллеги использовали на протяжении многих лет ... возвращаясь к 16-битным окнам на клиентских машинах, мы не имел доступа к. (Я встречался с самим собой?) Конечно, не все может / будет работать.

  • Проанализируйте любое поведение, которое вы видите.
  • Воспроизвести, если возможно, воспроизвести его.
  • Проверка на столе, просмотрите код, который вы подозреваете.
  • Резиновая уточка с членами команды И людьми, которые мало или совсем не знакомы с кодом. Чем больше вам придется кому-то что-то объяснять, тем больше у вас шансов что-то раскрыть.
  • Не расстраивайтесь. Сделайте перерыв 5-10 минут. Совершите быструю прогулку по зданию / улице / чему-то еще. Пока не думай о проблеме.
  • Слушайте свои инстинкты.
9
ответ дан 1 December 2019 в 13:32
поделиться

Это один из самых сложных сценариев отладки. Ответ будет зависеть от деталей производственной системы. Это система, над которой у вас есть полный контроль? Или она установлена на машине клиента, и вам нужно пройти через многочисленные телефонные звонки, чтобы получить доступ к файлу журнала или изменить параметр конфигурации?

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

6
ответ дан 1 December 2019 в 13:32
поделиться

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

Затем я расставляю приоритеты более дорогих тестов по вероятности и стоимости. Будьте изобретательны. Придумайте действительно странные вещи, которые могут вызвать поведение, которое вы видите.

2
ответ дан 1 December 2019 в 13:32
поделиться

Я использовал настраиваемую систему протоколирования, такую как Log4J, чтобы видеть, что происходит на производстве, это предполагает, что разработчики поместили полезную отладочную информацию в журналы.

Но имейте в виду, что протоколирование может раскрыть некоторые важные частные данные, которые должны быть закодированы и/или пропущены, когда это возможно.

0
ответ дан 1 December 2019 в 13:32
поделиться

Обычно «отладка» [т.е. присоединение к процессу и проверка выполнения] неосуществима - по многим причинам, не последней из которых является конфиденциальность данных [например, разработчики редко имеют квалификацию \ допуск к проверять данные, которыми мы манипулируем]

Так что обычно это сводится к выводу о выполнении из вторичных источников и артефактов. Затем это сводится к ...

  • Ведение журнала,
  • Ведение журнала,
  • Ведение журнала,

Подавляющее большинство программного обеспечения, написанного в наши дни, относится к лагерям Java или .Net, поэтому используйте log4j и log4net соответственно .

Также помогает наличие надежного Ops-ориентированного руководства по настройке и процессу проверки. Помните, что люди, ответственные за оборудование и среду, редко понимают требования к конфигурации приложений, которые они размещают.

1
ответ дан 1 December 2019 в 13:32
поделиться

Наряду с ведением журнала, другие методы включают сохранение данных запроса, которые вы затем можете передать в свою «идентичную» систему позже. Это может быть так же просто, как сохранение каждого полученного HTTP-запроса в файл для последующего анализа. Прямо сейчас вы, вероятно, регистрируете большую часть этой информации (особенно URL-адреса для GET), вам просто нужно добавить в смесь заголовки и тела запроса.

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

0
ответ дан 1 December 2019 в 13:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: