Как отладить рабочую java, используя дамп, записанный, когда приложение выдает исключение?

#java #debugging #production

#java #отладка #производство

Вопрос:

Как мы можем отладить то, что произошло, когда исключение было выдано позже?

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

И под отладкой я подразумеваю переход в отладчик, такой как Eclipse или отладчик IntelliJ, и просмотр кода для того, что произошло при возникновении исключения, в комплекте с данными, передаваемыми в методы и локальные переменные и т. Д.

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

Поэтому я бы предпочел решения, которые:

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

Комментарии:

1. У вас всегда будут побочные эффекты, поскольку что-то должно либо дополнительно запускаться в памяти, либо постоянно записывать что-то на жесткий диск, либо и то, и другое. Вы заглядывали в JVM Flight Recorder от Oracle? oracle.com/technetwork/java/javaseproducts/mission-control /…

2. Хорошее упоминание о JVM Flight Recorder — вы должны добавить это в качестве ответа!

Ответ №1:

Я рекомендую заглянуть в JVM Flight Recorder от Oracle, который не является бесплатным, но именно для этого сценария.

http://www.oracle.com/technetwork/java/javaseproducts/mission-control/java-mission-control-1998576.html