2009-02-26 9 views
4

J'ai une application Java qui utilise du code natif, et c'est un défaut. Je veux savoir où il est la formation de failles, mais je ne suis pas sûr de savoir comment lire le fichier de vidage hs_err_pid:Comment interpréter cette erreur 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 

Fondamentalement, ce sont les « j » cadres pointant vers? Est-ce que V+158 fait référence au décalage de bytecode dans la classe? Comment est-ce que je peux remonter de ceci à la source lignes en jeu?

En fait, j'aimerais un guide général de grokking ces décharges. Ce serait fantastique aussi.

Répondre

12

Pour un guide général un coup d'oeil à ces deux liens Fatal Error Log Troubleshooting et Crash Course on JVM Crash Analysis

+0

Je pensais juste, "Maintenant, où ai-je vu quelque chose à ce sujet récemment?" Il s'avère que c'était le blog de Kohsuke. –

+0

Lien pour [Java 8 Troubleshooting Guide] (https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/toc.html). Pour l'incident JVM (fichier de vidage de noyau), utilisez [jdb] (https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr011.html) –

0

je ne comprenais pas trop, ce qui pourrait « V + 158 » signifient ?? Cependant l'explication est simple, "V" est le type de retour de la méthode et fait partie de la description de la méthode. (la description est composée du nom du paquet, du nom de la classe, du nom de la méthode, des types de paramètres pris par la méthode et du type de retour) "V" signifie "void". C'est ce que l'on appelle "indice bytecode" - vous aviez raison.

Questions connexes