2009-02-26 7 views
4

Ich habe eine Java-App, die einige nativen Code verwendet, und es ist schuld. Ich möchte herausfinden, wo es Verwerfungen, aber ich bin nicht sicher, wie die hs_err_pid Dump-Datei zu lesen:Wie interpretiere ich diesen JVM-Fehler?

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 

Im Grunde, was sind die ‚j‘ Rahmen zeigt auf? Steht V+158 auf Bytecode-Offset in der Klasse? Wie kann ich davon zurück zur Quelle Linien im Spiel?

Eigentlich würde ich eine allgemeine Anleitung zum grokking diese Dumps lieben. Das wäre auch fantastisch.

Antwort

12

Für einen allgemeinen Leitfaden haben einen Blick auf diese beiden Links Fatal Error Log Troubleshooting und Crash Course on JVM Crash Analysis

+0

Ich dachte nur: "Wo habe ich kürzlich etwas davon gesehen?" Es stellte sich heraus, es war Kohsukes Blog. –

+0

Link für [Java 8 - Handbuch zur Fehlerbehebung] (https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/toc.html). Verwenden Sie für den JVM-Crash (Core-Dump-Datei) [jdb] (https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr011.html) –

0

ich zu verwirrt war, was könnte „V + 158“ bedeuten ?? jedoch Erklärung ist einfach, "V" ist Methode Rückgabetyp und ist Teil der Methode Beschreibung. (Die Beschreibung besteht aus Paketname, Klassenname, Methodennamen, Parametertypen, die von der Methode übernommen werden, und dem Rückgabetyp) "V" steht für "void".

+158 ist so genannte "Bytecode Index" - Sie hatten Recht.