Как да интерпретирам тази грешка на JVM?

Имам приложение на Java, което използва някакъв естествен код и има грешка. Искам да разбера къде има грешка, но не съм сигурен как да чета файла за дъмп hs_err_pid:

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 отнася ли се за отместването на байт кода в класа? Как мога да проследя обратно от това до изходните линии в играта?

Всъщност, бих се радвал на общо ръководство за разбиване на тези сметища. Това също би било фантастично.


person Chris R    schedule 26.02.2009    source източник


Отговори (2)


За общо ръководство погледнете тези две връзки Отстраняване на неизправности в журнала на фатални грешки и Интензивен курс по JVM Анализ на срив

person Mark    schedule 26.02.2009
comment
Просто си мислех, сега къде видях нещо за това наскоро? Оказа се, че това е блогът на Kohsuke. - person Michael Myers; 27.02.2009
comment
Връзка за Ръководство за отстраняване на неизправности в Java 8. За срив на JVM (ядро дъмп файл), използвайте jdb - person Lee Chee Kiam; 01.07.2015

и аз бях объркан, какво може да означава "V+158"?? Въпреки това обяснението е просто, "V" е тип връщане на метода и е част от описанието на метода. (описанието се състои от име на пакет, име на клас, име на метод, типове параметри, взети от метода, и тип връщане) "V" означава "невалидно".

+158 е така нареченият "индекс на байт код" - бяхте прав.

person martin    schedule 13.11.2009
comment
Разбира се, V означава празнота, хубаво е да ни го напомните. Научих това от JNI, можете ли да свържете откъде получавате източника си? - person John; 22.05.2018