Linux'ta çökme programlarının sorunlarını nasıl izleyebiliriz?


12

Bir uygulama Windows'da kilitleniyorsa, neyin kilitlendiğini görmek için Yönetim araçlarındaki Olay Görüntüleyicisi'ni kontrol edebiliriz. Bazen başkalarının yararlı olmayan bilgileri vardır, ancak bir başlangıçtır.
Linux'ta bir uygulama (herhangi biri) çökerse ne olduğunu nasıl izlemeye başlar?
Örneğin merkezi bir kütük veya benzeri bir şey var mı?


2
Bu tür bir hata ayıklamanın standart yolu, sorunlu uygulamayı bir terminalden manuel olarak başlatmaktır. Bu şekilde, yazdırılan hata mesajlarını görebilirsiniz.
terdon

2
Linux'un 64 bit sürümleri, çökmüş bir işlemin (sinyal nedeniyle ölen) kısa bir açıklamasını kaydeder /var/log/syslog. Linux, bir arka plan programının işlem çökmelerinden haberdar edilmesi için bir yol sağlar. Ubuntu'nun aparatı ve Red Hat'ın ani , merkezi günlük kaydı ve rapor oluşturma olanakları sağlamak için bunu kullanıyor. Genellikle bir çekirdek dökümü kaydedilir, böylece çökmüş programda bir hata ayıklayıcıyı çağırabilirsiniz.
Mark Plotnick

Bu soruyu iptal etmiş olurdum, ancak OP bir cevabı kabul ederek veya göndererek topluluğa yardım etmek istemiyor gibi görünüyor, bu yüzden cevap kabul eden benzer bir soru bulacağım ve umarım ki arama sonuçlarının en üstüne
çıkıp

Yanıtlar:


13

Örneğin merkezi bir kütük veya benzeri bir şey var mı?

Sistem günlükleri için normal yer /var/log/. Her günlüğe yazılanlar syslog yapılandırmasına bağlıdır, ancak genellikle girişler dışındaki her şey/var/log/syslog .

Bu, münferit uygulamaların bir sorun olması durumunda orada herhangi bir ipucu bırakacağının garantisi değildir. Ancak, onlar veya kabuk, standart çıkış / standart hata akışlarına bir şey tükürecek ve bir terminalden ön planda zahmetli bir uygulama çalıştırırsanız, bu şeyleri görebileceksiniz.


Biri ne aramalı /var/log? Hangi günlük dosyası? Bazı konvansiyon var mı?
Jim

2
Kilitlenmeyi gerçekleştirebiliyorsanız, / var / log altındaki en son değiştirilen dosyaya bakın. İle ls -lart, listedeki son dosya en son değiştirildi.
Devon_C_Miller

S - linux pencerelerden çok daha heterojen bir kural var . Syslog , sistem günlükçüsü anlamına gelir, ancak evrensel bir uygulama yoktur ve varyasyonlar daha sonra farklı şekillerde yapılandırılabilir. Genel mantık, mesajların uygulama tarafından syslog'a gönderilmesidir ve bu mesajlar daha sonra farklı dosyalara ayrılır. Belirtildiği gibi, genellikle her şey sonuçlanır /var/log/syslog, ancak farklı dağıtımlar işleri farklı şekilde yapar. Hangi sistem günlüğünü kullandığınızı biliyorsanız, bunu belirlemek için yapılandırmasını inceleyebilirsiniz.
goldilocks

6

Ubuntu üzerinde segfaults adresinde yazılıdır /var/log/kern.log. Ben segfaults bir program oluşturarak test:

void main() {
    int *a=0;
    *a=0;
}

Segülleştikten sonra şu satır vardı /var/log/kern.log:

a.out[534]: segfault at 0 ip 08048432 sp bfaec8c0 error 6 in a.out[8048000+1000]

1

Ubuntu'da uygulamanızı bir .desktop başlatıcı dosyasından başlatıyorsanız, seçeneği Terminal=true.desktop dosyanıza ekleyin .

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.