2010-01-17 175 views
8

如何使用堆棧跟蹤中的數字?這些是什麼意思? 在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) 
+0

這是什麼JVM? – 2011-03-08 13:14:03

回答

13

這些都是從方法開始引起異常的指令的偏移量。

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方法的調用指令。

+0

並且在哪個單位測量這個偏差?在行號我猜..或在指示?什麼算作一條線/指令?如果doSomething2()中有異常,那麼偏移量應該是多少? if(true){ doSomething1(); doSomething2(); } – hsmit 2010-01-17 12:10:43

+0

這是編譯代碼中的字節碼偏移量。調試器可以使用它來映射源代碼中的行號。如果沒有額外的將字節碼映射到源代碼行的調試信息,僅通過查看編號就可以找到源代碼行。 – 2010-01-17 12:21:12

+0

好的,謝謝!你能告訴我如何將字節碼偏移映射到源代碼行偏移嗎? – hsmit 2010-01-17 12:36:32

相關問題