我在RHEL 6.4服务器上运行JAVA程序。程序终止异常显示messaeg“分段故障(核心转储)”。但是我没有找到任何文件指出在运行程序的当前用户目录中终止的原因。在Linux上运行Java程序时出现分段错误
如何在这种情况下进行调试以找到错误?
DOUBT
按我相互理解段故障时程序试图外部的方案的范围内,以访问存储器地址时发生。我期望在C或C++程序中看到这样的错误,但是在Java中因为没有指针,所以如何实现分段错误。
我在RHEL 6.4服务器上运行JAVA程序。程序终止异常显示messaeg“分段故障(核心转储)”。但是我没有找到任何文件指出在运行程序的当前用户目录中终止的原因。在Linux上运行Java程序时出现分段错误
如何在这种情况下进行调试以找到错误?
DOUBT
按我相互理解段故障时程序试图外部的方案的范围内,以访问存储器地址时发生。我期望在C或C++程序中看到这样的错误,但是在Java中因为没有指针,所以如何实现分段错误。
分段故障如何实现。
这有几个可能的原因。 JVM本身或包中可能存在一个错误(其中一些用C或C++编写)。这也可能是由于配置不当而导致配置错误的原因。
从经验来看,JVM的bug是最不可能的(尽管我见过一些)。
如果您在崩溃点捕获堆栈跟踪,这可能会为您提供有关崩溃发生的确切位置的一些线索。
我没有收到任何堆栈跟踪,我只看到了发生分段错误的消息。 – juan
但你得到一个核心转储文件,并有工具可以读取 – Zarathustra
你有没有试过看'gdb'中的核心转储? – yamafontes
你使用的是什么版本和构建的Java?它可以在JVM中吗?你使用任何本地库? –
segfault表示某些本地代码(您使用本机库)还是JVM本身的错误。一些JVM将关于该问题的日志文件放在主目录中。 – Henry