2013-10-21 11 views
5

Ich verwende ein JAVA-Programm auf RHEL 6.4 Server. Das Programm wird abnormal beendet und zeigt die Meldung "Segmentierungsfehler (Core Dumped)" an. Aber ich finde keine Datei, die den Grund für die Beendigung im aktuellen Benutzerverzeichnis angibt, von wo aus das Programm ausgeführt wurde.Segmentierungsfehler beim Ausführen des Java-Programms unter Linux

Wie kann ich debuggen, um den Fehler in einem solchen Fall zu finden?

ZWEIFEL

Wie pro meine understandin Segmentierungsfehler tritt auf, wenn Programm eine Speicheradresse zuzugreifen versucht, außerhalb der Programme reichen. Ich würde erwarten, solche Fehler in C- oder C++ - Programmen zu sehen, aber in Java, da es keine Zeiger gibt, wie ist ein Segmentierungsfehler möglich.

+0

Haben Sie versucht, den Core Dump in 'gdb' zu betrachten? – yamafontes

+0

Welche Version und welches Build von Java verwenden Sie? Wie kann es in JVM sein? Verwenden Sie eine native lib? –

+0

Ein segfault weist auf einen Fehler in einem systemeigenen Code (verwenden Sie eine native Bibliothek) oder in der JVM selbst hin. Einige JVMs haben die Protokolldatei zum Problem im Home-Verzeichnis abgelegt. – Henry

Antwort

2

Wie ist ein Segmentierungsfehler möglich?

Dafür gibt es mehrere mögliche Gründe. Es könnte einen Fehler in der JVM selbst oder in einem Paket geben (einige davon sind in C oder C++ geschrieben). Dies könnte auch auf eine Fehlkonfiguration zurückzuführen sein, bei der inkompatible Komponenten zusammen verwendet werden.

Aus Erfahrung ist ein JVM-Fehler am wenigsten wahrscheinlich (obwohl ich einige gesehen habe).

Wenn Sie den Stack-Trace zum Zeitpunkt des Absturzes erfassen, gibt dies möglicherweise Hinweise darauf, wo genau der Absturz aufgetreten ist.

+1

Ich bekomme keine Stacktrace, ich sehe nur die Nachricht, dass Segmentierung Fehler aufgetreten ist. – juan

+1

aber Sie erhalten eine Core-Dump-Datei und es gibt Tools zum Lesen – Zarathustra

Verwandte Themen