Как показать исходные номера строк в выводе jstack? - PullRequest
0 голосов
/ 22 февраля 2009

Это вывод jstack от работающей JVM

"FooThread" prio=10 tid=0x00007f159c2ca000 nid=0x6e21 waiting on condition ..snipped
    java.lang.Thread.State: TIMED_WAITING (sleeping) 
    at java.lang.Thread.sleep(Native Method)
    at com.myco.impl.QueueFooThread.run(Unknown Source)

Я хочу, чтобы номер строки в QueueFooThread отображался как этот кадр для процесса Catalina

 at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1548)

Что мне делать во время компиляции / начальной загрузки, чтобы включить это? Спасибо

Ответы [ 4 ]

3 голосов
/ 22 февраля 2009

Это может быть не полный ответ, но передача опции -g (отладка) в javac позволяет отладчику (jdb) отображать информацию об источнике, включая номера строк. Я не уверен, сработает ли это в вашем случае.

1 голос
/ 22 февраля 2009

Скомпилируйте ваш источник с опцией отладки. Э.Г.

<javac target="1.5" source="1.5" classpathref="class.path" srcdir="${src}" destdir="${build}" debug="true" encoding="UTF-8"/>
0 голосов
/ 01 марта 2009

Компиляция с отладочной информацией, конечно, лучше. Но если это не ваш источник, вы всегда можете декомпилировать что-то вроде jad. Это не поможет вам с номерами строк, но если вы сделаете какие-то образованные предположения, это все равно может быть полезно в крайнем случае.

0 голосов
/ 22 февраля 2009

Вам нужно включить отладку при компиляции кода. Примечание : для библиотек им необходимо включить отладку при компиляции.

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