2013-10-21 22 views
5

Używam programu JAVA na serwerze RHEL 6.4. Program kończy nieprawidłowo wyświetlać komunikat "Błąd segmentacji (Core dumped)". Ale nie znajduję żadnego pliku wskazującego przyczynę zakończenia w bieżącym katalogu użytkownika, z którego uruchomiono program.Błąd segmentacji podczas uruchamiania programu Java w systemie Linux

Jak mogę debugować, aby znaleźć błąd w takim przypadku?

DOUBT

Jak na moje understandin winy segmentacji występuje wtedy, gdy program próbuje uzyskać dostęp do adresu pamięci poza zakresem programów. Spodziewam się, że takie błędy wystąpią w programach C lub C++, ale w Javie, ponieważ nie ma żadnych wskaźników, w jaki sposób jest możliwy błąd segmentacji.

+0

Czy próbowałeś spojrzeć na zrzut główny w 'gdb'? – yamafontes

+0

Jakiej wersji i wersji java używasz? Jak może być w JVM? Czy używasz dowolnej natywnej biblioteki? –

+0

Segfault wskazuje na błąd w jakimś natywnym kodzie (korzystasz z natywnej biblioteki) lub w samej JVM. Niektóre maszyny JVM umieszczają plik dziennika dotyczący problemu w katalogu domowym. – Henry

Odpowiedz

2

jak możliwy jest błąd segmentacji.

Jest kilka możliwych powodów. Może wystąpić błąd w samej JVM lub w pakiecie (niektóre z nich są napisane w C lub C++). Może to być również spowodowane błędną konfiguracją, w której niezgodne komponenty są używane razem.

Z doświadczenia wynika, że ​​błąd JVM jest najmniej prawdopodobny z tych (chociaż widziałem kilka).

Jeśli przechwycisz ślad stosu w momencie awarii, może to dać ci wskazówki, gdzie dokładnie nastąpi awaria.

+1

Nie otrzymuję żadnego stacktrace, widzę tylko komunikat, że wystąpił błąd segmentacji. – juan

+1

, ale otrzymasz plik zrzutu pamięci i są narzędzia do czytania takich – Zarathustra

Powiązane problemy