我正在调试一个线程被挂起的 Java 程序。检查此线程的堆栈跟踪时,有一个 JDI StackFrame,它的方法是
sleep
用于 JDK 类 java.lang.Thread。我想检查这个 StackFrame 的 JDI Location,特别是这个方法的 lineNumber。但是,缺少 lineNumber,我想知道为什么。这是因为我使用的 JDK 类没有使用调试信息编译吗?
我看到自己定义的方法,使用调试信息编译,有可用的行号,这让我认为调试信息的存在是不同的。但是,我想知道是否还有其他因素可能是问题所在。 lineNumbers 是否来自调试信息?
非常感谢。
原来我试图为没有函数体(因此没有行号)的本机方法获取行号。