Есть ли способ добавить дополнительную информацию в трассировку стека Java?
Я занимаюсь разработкой интерпретатора для языка сценариев и хотел бы видеть соответствующие строки кода сценария в трассировке стека Java.
Вывод может выглядеть примерно так:
java.lang.NullPointerException
at package.IPF_Try.execute(IPF_Try.java:76) called in script.scr:155
at package.IPF_Block.execute(IPF_Block.java:304)
at package.IPF_If.execute(IPF_If.java:105) called in script.scr:130
at package.IPF_Block.execute(IPF_Block.java:304)
at package.IPF_Main.execute(IPF_Main.java:147)
...
или это:
java.lang.NullPointerException
at package.IPF_Try.execute(IPF_Try.java:76)
--- called in script.scr:155 ---
at package.IPF_Block.execute(IPF_Block.java:304)
at package.IPF_If.execute(IPF_If.java:105)
--- called in script.scr:130---
at package.IPF_Block.execute(IPF_Block.java:304)
at package.IPF_Main.execute(IPF_Main.java:147)
...
Это значительно упростит отладку, к сожалению, Google не может найти ничего, чтобы достичь этого.
Единственный способ, которым я мог придумать, - это динамически генерировать множество классов с методами, чье имя содержит информацию, которая мне нужна, и которые просто вызывают следующий метод в трассировке стека - но это кажется пустой тратой (permgen) памяти. и ЦП мне.