有没有办法向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)
...
这会使调试变得容易很多,遗憾的是谷歌找不到任何可以实现此目的的东西。
我能想到的唯一方法是用方法动态生成很多类,其名称包含我需要的信息,并且只是调用stacktrace中的下一个方法 - 但这似乎浪费了(permgen)内存和cpu循环给我。