Мне было интересно, существует ли что-то (в мире Java), способное сделать снимок текущего состояния JVM со следующими функциями:
- Делайте это, пока выдается исключение.
- Захватывать локальные переменные, аргументы метода и т. Д.
- Поместите его в удобный файл, который можно использовать для извлечения или воспроизведения в IDE ситуации в вашем исходном коде.
Требуются две первые функции (третья будет потрясающей). И он должен быть пригоден для производственного использования (то есть, нет никакой возможности отладчиков).
Прежде чем спросить об этом, я искал в WWW (как можно дольше) и нашел несколько указателей:
- Cajoon Interceptor : Как сказано в Dzone post , это пассивный агент JVM, который выполняет три требования! Но у этого есть два недостатка: вы должны заплатить за него, и сайт не работает (возможно, нет никакой возможности заплатить что-либо).
- AviCode Intercept Studio : эквивалент Cajoon .NET. Просто, чтобы дать некоторое представление о.
- JavaFrame : Хорошо, это твит, но он указывает на доступное репозиторий SVN с исходным кодом (под лицензией MIT) агента JVM, который выглядит нормально (я собираюсь дать попробуйте).
Так, может, я ищу несуществующее решение? Это не срочно, но у меня была идея для проекта, и было бы здорово изучить этот «неизвестный» (?) Путь и получить что-то реальное.
Кажется очевидным, что это будет агент JVM (исключение из JVMTI, для пример ).
Наконец, я бы выделил следующий абзац из статьи Википедии по обработке исключений :
В средах работы двигателя, таких как
Java или .NET, существуют инструменты, которые
прикрепить к двигателю времени выполнения и каждый
время, что исключение интереса
происходит, они записывают отладку
информация, которая существовала в памяти на
время исключения
(вызов стека и значений кучи). Эти
инструменты называются Automated Exception
Инструменты обработки или перехвата ошибок
и предоставить информацию о первопричинах
для исключений.
Это идея. Я надеюсь, что кто-то может дать мне некоторое представление или, возможно, в будущем кто-то вдохновится этим скромным постом:)
Спасибо!