CoreDump dosyasını nasıl görüntülerim?


13

Bir kilitlenmeden kaynaklanan bir hatayı bildirirken, hata özel hale getirilir ve CoreDump.gz adlı bir dosya yapılır. Bug Triage belgeleri şunları söylüyor:

Kilitlenme hala bir CoreDump.gz ekine sahipse, otomatik olarak tamamen sembolik bir yığın izlemesi almak ve kopyaları kontrol etmek mümkün değildi.

Stacktrace.txt bir insan tarafından okunabilir görünüyor. Yığın izinin anlamını nasıl anlayabilirim. CoreDump withing CoreDump.gz insan tarafından okunabilir görünmüyor. "Tamamen sembolik yığın izi" nedir? "Tam sembolik yığın izlemesi" arasındaki fark nedir Bir CoreDump dosyasının içeriğini nasıl görüntülerim? ('kedi' denedi, ama temiz değil)

Yanıtlar:


15

Coredump.gz, kilitlenen programın erişebildiği (sıkıştırılmış) bellektir. Bu bir ikili dosyadır. Coredumps, her türlü özel verinin çıkarılacağı bir hazine hazinesidir.

Coredumps 'gdb' çalıştırılarak görüntülenebilir:

gdb --core=mycoredump

Tabii ki, hala bu çekirdekle ilişkili hata ayıklama paketlerine ihtiyacınız olacak.

Daha sonra şu şekilde bir yığın izi oluşturabilirsiniz:

(gdb) bt

geçerli iş parçacığının yığın izini oluşturmak için - parametre çözünürlüğü olmadan - veya

(gdb) thread apply all bt full

coredump içindeki parametre çözünürlüğüyle tüm iş parçacıklarının yığın izini oluşturmak için.

stacktrace ve full stacktraces bir program içindeki kontrol akışını gösterir. Python için, yığın izinin üst kısmı en son çağrıyı gösterir, en yenisi alt kısımdadır; hemen hemen her şey için, üst en son çağrı, alt en eski çağrıdır.

Tam bir yığın izleme yalnızca akışı değil, aynı zamanda parametrenin değerlerini de gösterir. Burası genellikle özel verileri bulduğumuz yerdir - örneğin, "Parola" adlı bir parametreyle "validatePassword" adlı bir işlev ve "MySecretPassword" değerine sahip bir işlev gördüğünüzü varsayalım ...

Yığın izleri genellikle yalnızca hata ayıklama paketleri yüklüyse yararlı olur (böylece yığın kareleri kolayca okuyabileceğimiz bir şeye çözümlenebilir). Bir yığın izlemenin analizi, bir kişinin bu özel program örneğini oluşturmak için kullanılan kaynaklara sahip olmasını gerektirir.


CoreDump bir ikili dosyadır, ancak nasıl görüntülenir? Stacktraces sadece hata ayıklama paketleri yüklüyse yararlı olur, o zaman apport neden başka türlü rapor eder?
komputes

1
CoreDump dosyasının görüntülenmesi değil, gdb'de hata ayıklamak için kullanılması amaçlanmıştır. Kilitlenmeyi oluşturan ve hata ayıklama paketlerine sahip yazılımın (ve tüm bağımlılıkların) aynı sürümünü çalıştıran bir makineye sahip olmanız gerekir, o zaman Carlos'un yığın izlemesini almak için yukarıda neler yayınladığını kullanabilirsiniz.
stgraber

2
Şimdi neden hala apport için alakalı olduğuna gelince, apport, coredump'ınızı tutan, hata ayıklama paketlerini DC'deki bir kutuya yükleyen ve daha sonra tam yığın izlemesini hata raporuna ekleyen bir grup "retrakör" e sahip olduğu için.
stgraber


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.