2013-10-21 18 views
5

RHEL 6.4 Sunucusunda bir JAVA programı çalıştırıyorum. Program, "Segmentasyon hatası (Çekirdek ayrılmış)" mesajını anormal olarak görüntüleyerek sonlandırır. Ancak, geçerli kullanıcı dizininde programın çalıştırıldığı yerden sonlandırma nedenini belirten herhangi bir dosya bulamadım.Linux üzerinde Java programını çalıştırırken bölümleme hatası

Nasıl böyle durumlarda hatayı bulmak için debug? Program programlar aralığı dışında bir bellek adresi erişmeye çalıştığında benim understandin parçalama arızası gereğince

KUŞKU oluşur. C veya C++ programlarında bu tür hataları görmeyi beklerdim, fakat Java'da hiç işaretçi olmadığından segmentasyon hatası nasıl mümkün olur.

+0

"gdb" deki çekirdek döküme bakmayı denediniz mi? – yamafontes

+0

Java'nın hangi sürümü ve sürümü kullanıyorsunuz? JVM'de olabileceği gibi? Herhangi bir yerli kütüphane kullanıyor musunuz? –

+0

Bir segfault, bazı yerel kodlarda (yerel bir kütüphane kullanıyor) veya JVM'nin kendisinde bir hatayı gösterir. Bazı JVM'ler giriş dizinindeki sorunla ilgili günlük dosyasını koyar. – Henry

cevap

2

nasıl segmentasyon hatası mümkündür.

Bunun birkaç nedeni olabilir. JVM'nin kendisinde veya bir pakette bir hata olabilir (bunlardan bazıları C veya C++ ile yazılmıştır). Uyumsuz bileşenlerin birlikte kullanıldığı yanlış yapılandırmadan da kaynaklanabilir.

deneyim, bir JVM hata bunlardan en az olasıdır (Bazı gördüm rağmen). kilitlenme noktasında yığın izleme yakalamak ise

, bu kilitlenme oluştuğu tam olarak nerede olarak size bazı ipuçları verebilir.

+1

ile herhangi yerel kod ... JDK 1.6 üzerinde BouncyCastle ile sadece düz JDBC .. ama fırsatları kullanmıyorum, sadece arıza oluştu bölümlemesine mesajı görmek. – juan

+1

ancak çekirdek bir döküm dosyası alırsınız ve böyle okumak için araçlar vardır – Zarathustra

İlgili konular