Как добавить информацию JSR -045 SMAP в трассировку стека Java во время выполнения?

При работе с JSP или другими языками, преобразованными в исходный код Java (или в заглушки ), часто создается файл SMAP, который впоследствии может быть встроен в файл класса, чтобы отладчики могли лучше отображать трассировку стека (. ] или в случае с Jasper он встраивается автоматически ).

Существует старая ошибка JVM (или RFE ). добавить поддержку для включения информации SMAP в трассировку стека, но из-за отсутствия активности кажется, что ребята из Sun/Oracle предпочитают, чтобы каждый публиковал -сам обрабатывал свои трассировки стека.

Итак, вот мой вопрос :Как это сделать? Существуют ли библиотеки, которые делают всю тяжелую работу за вас, или вам приходится все реализовывать самостоятельно?

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

  • перебрать трассировку стека
  • Проверять каждую запись, могу ли я найти класс
  • Проанализируйте класс с e. грамм. ASM для извлечения информации SMAP
  • Напишите синтаксический анализатор SMAP, который анализирует обратное сопоставление строк и имена файлов из информации SMAP
  • . Заменить элемент трассировки стека новым на основе сопоставления (или, альтернативно, добавить новый? Что лучше?)
  • Кэшируйте часть информации, чтобы мне не приходилось делать то же самое снова, если точно такая же (или похожая )трассировка стека re -появится через несколько секунд.

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

6
задан mihi 28 June 2012 в 18:33
поделиться