Linux uygulamasının kilitlenmesiyle oluşan çekirdek dosyayı nerede arayabilirim?


19

Linux uygulamamdan birinin çökmesinin nedenini bulmaya çalışıyorum. Ama çekirdeğin nereye gittiğini bilmiyorum.

cat /proc/sys/kernel/core_pattern
core.%e.%p

Herhangi bir fikir?

Yanıtlar:


23

Çekirdek dökümü, çökme sırasında işlemin geçerli dizinine yazılır.

Tabii ki çekirdek dökümü etkinleştirilmelidir, varsayılan olarak bunlar genellikle devre dışıdır. Çıktısını kontrol edin ulimit -c, eğer 0 ise çekirdek dosya yazılmaz. ulimit -c unlimitedÇekirdek dökümlerini etkinleştirmek için çalıştırın ; bu, işlem tarafından başlatılan işlemler tarafından devralınan işlem başına bir ayardır.

Bir çekirdek dökümü oluşturulmuşsa, ancak nerede olduğunu bilmiyorsanız, işlemi tekrar başlatabilirsiniz (hemen çökmeden), işlemin işlem kimliğinin ls -l /proc/$pid/cwdnerede $pidolduğunu yaparak çalışma dizinini kontrol edin . Bu bağlantı o işlemin geçerli çalışma dizinini gösterecektir. Muhtemelen çekirdek dökümü orada olacak. Aksi takdirde findtüm sistemi çalıştırmanız gerekir ...


3
Ulimit -c sınırsız kontrol, ama hala işlemin geçerli dizin hiçbir şey yoktur.
dcds

1
Bu yani bu, uygulama ölümcül hatayı kendisi tespit ve iptal olması mümkün değil "gerçek" çarpışma böyle bir segmentasyon ihlali veya benzeri gibi olur bir 'core üretir. Eğer uygulama hakkında hiçbir bilgi vermek gibi bilmek mümkün değildir.
wurtel

1
Kesinlikle bir çarpışma coz Ben bilerek boş bir işaretçi yapıyor.
dcds

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.