Как показать номера исходной строки в jstack output?


0

Это выход jstack из работающей виртуальной машины Java

"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, чтобы показать, как этот кадр для процесса Каталина

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

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

  0

В вашем примере у вас есть собственный метод и метод с неизвестным местоположением источника, ни один из которых не может иметь номера строк, отображаемых для них ... 22 фев. 092009-02-22 05:21:57

3

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

  0

Мне нужно было: -g: строки, источник, чтобы получить его Работа. 22 фев. 092009-02-22 07:18:08

  0

Хм, я думал, что -g будет включать всю информацию об отладке (включая строки и источник). Но что работает ... 22 фев. 092009-02-22 08:13:12


1

Скомпилируйте источник с помощью опции отладки. .

<javac target="1.5" source="1.5" classpathref="class.path" srcdir="${src}" destdir="${build}" debug="true" encoding="UTF-8"/> 

0

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


0

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