Java 堆栈跟踪中的数字是什么意思?

Java 堆栈跟踪中的数字是什么意思?,java,eclipse,exception,console,stack-trace,Java,Eclipse,Exception,Console,Stack Trace,如何使用stacktrace中的数字?这些是什么意思? 在eclipse中,我经常遇到异常,例如NullPointerException: java.lang.NullPointerException at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(+68) at com.sun.midp.lcdui.AutomatedEventHandler.commandEvent(+47) at com.sun.midp.lcdui

如何使用stacktrace中的数字?这些是什么意思? 在eclipse中,我经常遇到异常,例如NullPointerException:

java.lang.NullPointerException
  at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(+68)
  at com.sun.midp.lcdui.AutomatedEventHandler.commandEvent(+47)
  at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.handleVmEvent(+186) 

这些是从方法开始导致异常的指令偏移量

java.lang.NullPointerException
  at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(+68)
方法
com.sun.midp.lcdui.DefaultEventHandler.commandEvent
中偏移量68处的指令通过访问空引用导致实际异常

  at com.sun.midp.lcdui.AutomatedEventHandler.commandEvent(+47)
方法
com.sun.midp.lcdui.AutomatedEventHandler.commandEvent
中偏移量47处的指令是运行
com.sun.midp.lcdui.DefaultEventHandler.commandEvent
方法的调用指令

  at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.handleVmEvent(+186)

方法
com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.handleVmEvent
中偏移量186处的指令是一条调用指令,它运行
com.sun.midp.lcdui.AutomatedEventHandler.commandEvent
方法。

该偏移量是以哪个单位测量的?我猜是排队的。。还是在指令中?什么算是行/指令?如果doSomething2()中存在异常,偏移量应该是多少?如果(true){doSomething1();doSomething2();},则为编译代码中的字节码偏移量。调试器可以使用它映射到源代码中的行号。如果没有将字节码映射到源代码行号的额外调试信息,只需查看行号就可以找到源代码行。好的,谢谢!你能告诉我如何将字节码偏移量映射到源代码行偏移量吗?@hsmit:如果你编译源代码时没有调试信息(
javac-g:none-source.java
),你就不能这样做。否则,JVM应该为您转储行号,而不是偏移量。从
.class
文件手动读取调试信息需要解析二进制文件,这并不容易。为什么不附加一个调试器呢?我正在用Eclipse和无线工具包(WTK)运行我的应用程序(midlet)。我没有在调试模式下运行它。我不明白你所说的“附加调试器”是什么意思。
  at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.handleVmEvent(+186)