0

这是来自正在运行的 JVM 的 jstack 输出

"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

4 回答 4

3

这可能不是一个完整的答案,但通过-g(debugging) 选项javac使调试器 ( jdb) 能够显示源信息,包括行号。我不确定它是否适用于您的情况。

于 2009-02-22T05:23:24.210 回答
1

使用调试选项编译您的源代码。例如

<javac target="1.5" source="1.5" classpathref="class.path" srcdir="${src}" destdir="${build}" debug="true" encoding="UTF-8"/>
于 2009-02-22T06:12:31.703 回答
0

您需要在编译代码时启用调试。注意:对于库,它们必须在编译时启用调试。

于 2009-02-22T08:58:31.900 回答
0

使用调试信息编译当然是最好的。但如果它不是你的源代码,你总是可以用 jad 之类的东西反编译。这对你的行号没有帮助,但如果你做出一些有根据的猜测,它在紧要关头仍然很有用。

于 2009-03-01T08:21:43.817 回答