【问题标题】:How do I interpret this JVM fault?我如何解释这个 JVM 错误?
【发布时间】:2010-10-10 04:51:00
【问题描述】:

我有一个使用一些本机代码的 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 指的是 类中的字节码偏移量?我怎样才能从这个追溯到源头 台词在玩?

实际上,我希望有一份关于探索这些垃圾场的一般指南。那也太棒了。

【问题讨论】:

    标签: java debugging java-native-interface core hs-err


    【解决方案1】:

    对于一般指南,请查看这两个链接 Fatal Error Log TroubleshootingCrash Course on JVM Crash Analysis

    【讨论】:

    • 我只是在想,“最近我在哪里看到了这方面的信息?”原来是小介的博客。
    • Java 8 Troubleshooting Guide 的链接。对于 JVM 崩溃(核心转储文件),使用 jdb
    【解决方案2】:

    我也很困惑,“V+158”是什么意思? 但是解释很简单,“V”是方法返回类型,是方法描述的一部分。 (描述由包名、类名、方法名、方法采用的参数类型和返回类型组成)“V”代表“void”。

    +158 就是所谓的“字节码索引”——你是对的。

    【讨论】:

    • 当然V代表虚空,你好提醒我们。我从 JNI 学到的,你能链接你从哪里得到你的源代码吗?
    猜你喜欢
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    • 2019-11-19
    相关资源
    最近更新 更多