Добавить пользовательскую информацию в трассировку стека Java - PullRequest
6 голосов
/ 29 августа 2011

Есть ли способ добавить дополнительную информацию в трассировку стека 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) памяти. и ЦП мне.

1 Ответ

1 голос
/ 29 августа 2011

Если вы переводите свои скрипты в байт-код, вы можете предоставить подробности отладки, используя атрибуты SourceFile и LineNumber.

Мне не известен механизм ввода информации в стек вызовов во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...