2009-02-26 86 views
4

我有一個使用一些本地代碼的Java應用程序,它是錯誤的。我想找出哪裏它的斷層,但我不知道如何讀hs_err_pid轉儲文件:如何解釋此JVM故障?

Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) 
V [libjvm.so+0x256cbc] 
V [libjvm.so+0x25df69] 
V [libjvm.so+0x25dbac] 
V [libjvm.so+0x25e8c8] 
V [libjvm.so+0x25e49f] 
V [libjvm.so+0x16fa3e] 
j br.com.cip.spb.single.SPBRequestApplicationController.processJob(Lcom/planet/core360/docgen/ProcessingEnvironment;Lcom/planet/core360/dsmv2/processing/ApplicationDataJob;)V+158 
j com.planet.core360.cgen.CgenProcessor.processJob(Ljava/lang/String;Lcom/planet/core360/docgen/ProcessingEnvironment;Lcom/planet/core360/dsmv2/processing/ApplicationDataJob;)V+108 
j com.planet.core360.cgen.CgenProcessor.processJob(Ljava/lang/String;Lcom/planet/core360/docgen/ProcessingEnvironment;Lcom/planet/core360/dsmv2/processing/ScheduledJob;)V+7 
v ~StubRoutines::call_stub 
V [libjvm.so+0x17af0c] 
V [libjvm.so+0x28b9d8] 
V [libjvm.so+0x17ad3f] 
V [libjvm.so+0x1a58a3] 
V [libjvm.so+0x18bc24] 
C [cgen+0xa6d6] 
C [cgen+0xae1e] cgen_process_job+0x336 
C [cgen+0x10442] 
C [cgen+0x7714] 
C [cgen+0x38216] 
C [cgen+0x3a29d] 
C [cgen+0x37e3c] 
C [cgen+0x7558] 
C [libc.so.6+0x166e5] __libc_start_main+0xe5 

基本上是什麼「J」幀指向? V+158是指類中的 字節碼偏移量?我該如何追溯到源頭 線路?

其實,我很樂意爲這些垃圾堆積一個通用指南。那也太棒了。

回答

0

我很困惑過,有什麼能「V + 158」是什麼意思?但是說明很簡單,「V」是方法返回類型,是方法描述的一部分。 (描述由程序包名稱,類名稱,方法名稱,方法和返回類型所採用的參數類型組成)「V」代表「void」。

+158被稱爲「字節碼索引」 - 你是對的。