Есть ли способ добавить дополнительную информацию в трассировку стека java?
Я разрабатываю интерпретатор для языка сценариев и хотели бы видеть соответствующие строки кода сценария в java stacktrace.
Результат может выглядеть примерно так:
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 не смог найти ничего для этого.
Единственный способ, который я мог придумать, - это динамически генерировать множество классов с методами, имя которых содержит нужную мне информацию и которые просто вызывают следующий метод в трассировке стека - но это кажется как трата (перманентной) памяти и циклов процессора для меня.