“Segmentasyon hatası (çekirdek dökümü)” nasıl çözülür?


15

Ubuntu 14.04 kullanıyorum.

Bazı uygulamaları yükledikten sonra bir segmentasyon hatası (çekirdek dökümü) hatası ile karşılaştım.

Bu ne demek ? Bu sorunu nasıl çözebilirim?

Örneğin :

Krom dengeli yükledikten sonra, terminalden başlattığımda bu hatayla karşılaşıyorum.


Bazı ikili program çöktü, ancak bu çöken programa çok özgüdür, bu yüzden bize hangi programın bunu ürettiğini söylemeniz gerekebilir, ayrıca güncellemeyi deneyebilirsiniz.
Kwaadpepper


1
Kapalı bir kaynak olduğundan, GooGle amca için bir hata raporu hazırlasanız iyi olur!
user.dz

1
İyi SH :) Amca soracağım; P
Ravan

1
Tercihlerini ve önbelleğini kaldırmayı deneyin sudo rm -rf ~/.config/google-chrome ~/.cache/google-chrome. Sonra gizli modda çalıştırıngoogle-chrome --incognito
user.dz

Yanıtlar:


12

Bu ne demek?

Bkz. AU: Segmentasyon hatası nedir? ve ayrıca bazı örnekleri olan bu nasıl çoğaltılır, SO: segmentasyon hatası nedir? . Ben gelebilir en basit açıklama (mükemmel olmayabilir):

Program kendi bölümünden bir bellek alanına erişmeye çalıştı. OS engeller.

Bazı durumlar: Başlatılmış işaretçiyle okuma değeri, Dizide aralık dışına çıkma, İşlev çağrısı (geriye dönük uyumluluk korunmadığında), ...

Ancak, büyük programlarda veya diğer proje kütüphanelerinde yayın yapan programlarda sebebi bulmak her zaman kolay değildir. Ve çoğu durumda, hedef program için ya da bağımlılıkları varsa bir hata raporu ile sonuçlanır (ya yukarı akış projesi ya da aşağı dağıtım paketi).

Bu sorunu nasıl çözebilirim?

Herhangi bir özel yapılandırma / kurulum yapmadıysanız ve tüm güncellemeler yüklüyse. Hata raporu gönderin , bkz. Bir hatayı nasıl bildiririm?

Açık kaynak Ubuntu tarafından destekleniyorsa ubuntu-bug( apport-bug) kullanın . Üçüncü taraf kapalı kaynak için, yardım sayfalarında hataları nasıl rapor edip ilgili verileri nasıl topladıklarını kontrol edin.


Not: Küçük bir programlama geçmişiniz bile varsa, bunu kendiniz çözmek için elinizden gelenin en iyisini yapmanız önerilir. Yıllarca aktif olmayan birçok hata raporu var. Veya en azından sorunu bildirmeden önce sorunu çözmek için yeterli hata ayıklama verisi toplayın.

Hata Ayıklama için Bazı Yararlı Araçlar

  1. apport-bug günlükler / çekirdek dökümü / geri izleme

    Segmentasyon hatasından önce bir hata mesajınız yoksa. --saveSeçeneği ile çalıştırın ve geri izleme günlüğünü arayın:

    apport-bug program-cmd --save bug-report_output.txt
    
  2. gdb geri izleme / hata ayıklama kaynak kodu

    Eğer işe yaramazsa, şunu kullanın gdb:

    $ gdb program-cmd
    (gdb) run
    (gdb) backtrace
    

    Herhangi bir hata mesajı alırsanız, benzer durumlarda web'i, fırlatma rampasını ve akış yukarı proje hata izleyicisini kontrol edin.

    Bazı ileri düzey kullanıcılar için veya ac / c ++ öğrenim yolunu izleyen kişiler, karşılık gelen -dbgsembol paketlerini indirebilirler . Ardından gdb, kaynak aracılığıyla program akışını izlemek ve çalışma zamanı hatasını yükselten tam işlevi / komutu almak için kullanabilirsiniz.

  3. strace sistem çağrısı izleme

    Yardımcı olabilecek başka bir araç strace, hoşuma gitti. Gerçekten güçlü bir araç.

    Kendini sunar:

    En basit durumda strace, belirtilen komutu çıkana kadar çalıştırır. Bir işlem tarafından çağrılan sistem çağrılarını ve bir işlem tarafından alınan sinyalleri keser ve kaydeder. Her sistem çağrısının adı, bağımsız değişkenleri ve dönüş değeri standart hataya veya -o seçeneğiyle belirtilen dosyaya yazdırılır.

    straceyararlı bir tanı, öğretim ve hata ayıklama aracıdır. Sistem yöneticileri, tanılayıcılar ve sorun gidericiler, kaynağın hazır bulunmadığı programlarla ilgili sorunları çözmek için bunları değerlendirmek için yeniden derlenmeleri gerekmediği için çok değerli bulacaklardır. Öğrenciler, bilgisayar korsanları ve aşırı meraklı olanlar, sıradan programları bile izleyerek bir sistem ve sistem çağrıları hakkında çok şey öğrenilebileceğini göreceklerdir. Ve programcılar, sistem çağrıları ve sinyalleri kullanıcı / çekirdek arayüzünde meydana gelen olaylar olduğundan, bu sınırın yakından incelenmesinin hata izolasyonu, akıl sağlığı kontrolü ve yarış koşullarını yakalamaya çalışmak için çok yararlı olduğunu göreceklerdir.

    Kaynak: man strace

  4. ltrace dinamik kütüphane çağrı izleme

    ltracebelirtilen komutu çıkana kadar çalıştıran bir programdır. Yürütülen işlem tarafından çağrılan dinamik kitaplık çağrılarını ve bu işlem tarafından alınan sinyalleri keser ve kaydeder. Ayrıca program tarafından yapılan sistem çağrılarını kesebilir ve yazdırabilir.

    Kullanımı strace(1) ' e çok benzer .

    Kaynak: man ltrace

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.