Çekirdek dökümü - Core dump

İçinde bilgi işlem, bir çekirdek dökümü,[a] bellek dökümü, çarpışma dökümü, sistem dökümüveya ABEND dökümü[1] kayıtlı çalışma durumundan oluşur hafıza bir bilgisayar programı belirli bir zamanda, genellikle programın çöktü veya anormal şekilde feshedildi.[2] Uygulamada, diğer önemli parçalar program durumu genellikle aynı anda atılır. işlemci kayıtları program sayacı ve yığın işaretçisini, bellek yönetim bilgilerini ve diğer işlemci ve işletim sistemi bayraklarını ve bilgilerini içerebilir. Bir anlık görüntü dökümü (veya hızlı döküm) tarafından istenen bir bellek dökümüdür Bilgisayar operatörü veya çalışan program tarafından, ardından program devam edebilir. Çekirdek döküntüler, genellikle teşhis koymaya yardımcı olmak için kullanılır ve hata ayıklama bilgisayar programlarındaki hatalar.

Birçok işletim sisteminde bir Ölümcül istisna bir programda otomatik olarak çekirdek dökümünü tetikler. Uzantı olarak, "çekirdeği dökmek" ifadesi, birçok durumda, program belleğinin bir kaydı olup olmadığına bakılmaksızın herhangi bir ölümcül hata anlamına gelmektedir. "Çekirdek dökümü", "bellek dökümü" veya sadece "dökümü" terimi, daha fazla inceleme veya başka amaçlar için büyük miktarda ham verinin herhangi bir çıktısını belirtmek için de jargon haline gelmiştir.[3][4]

Arka fon

İsim nereden geliyor manyetik çekirdek hafızası,[5] ana şekli rasgele erişim belleği 1950'lerden 1970'lere. Adı, manyetik çekirdek teknolojisi modası geçmiş hale geldikten sonra uzun süre kaldı.

İlk çekirdek dökümler kağıt çıktılardı[6] bellek içeriğinin tipik olarak sütunlarında düzenlenmiş sekizli veya onaltılık sayılar (a "onaltılık döküm "), bazen makine dili talimatları, metin dizeleri veya ondalık veya kayan noktalı sayılar (cf. sökücü ).

Bellek boyutları arttıkça ve ölüm sonrası analiz araçları geliştirildikçe, dökümler teyp veya disk gibi manyetik ortama yazılmıştır.

Yalnızca uygulanabilir belleğin içeriğini görüntülemek yerine, modern işletim sistemleri tipik olarak, çökmüş işleme ait belleğin bir görüntüsünü veya parçaların bellek görüntülerini içeren bir dosya oluşturur. adres alanı işlemci kayıtlarının değerleri, program sayacı, sistem bayrakları ve çökmenin temel nedenini belirlemede yararlı olan diğer bilgiler gibi diğer bilgilerle birlikte bu işlemle ilgili. Bu dosyalar metin olarak görüntülenebilir, yazdırılabilir veya elfdump gibi özel araçlarla analiz edilebilir. Unix ve Unix benzeri sistemler objdump ve kdump açık Linux, WinDbg Microsoft Windows, Valgrind veya diğer hata ayıklayıcılarda.

Kullanımlar

Çekirdek dökümler, çeşitli durumlarda yararlı hata ayıklama yardımcıları olarak hizmet edebilir. Erken bağımsız veya toplu işleme sistemler, çekirdek dökümler, bir kullanıcının hata ayıklama için (çok pahalı) bilgi işlem tesisini tekeline almadan bir programın hatalarını ayıklamasına izin verdi; çıktı almak, hata ayıklamaktan daha uygun olabilir. ön panel anahtarlar ve ışıklar.

İster zaman paylaşımı, toplu işlem veya sunucu sistemleri olsun, paylaşılan bilgisayarlarda çekirdek dökümler, işletim sistemi, böylece sistem hemen çalışmaya başlayabilir.

Çekirdek dökümler, bir kullanıcının daha sonra veya site dışı analiz için veya diğer kilitlenmelerle karşılaştırmak için bir çökmeyi kaydetmesine olanak tanır. İçin gömülü bilgisayarlar, bilgisayarın kendisinde hata ayıklamayı desteklemek pratik olmayabilir, bu nedenle bir dökümün analizi farklı bir bilgisayarda gerçekleştirilebilir. Eski sürümleri gibi bazı işletim sistemleri Unix eklemeyi desteklemedi hata ayıklayıcılar İşlemleri çalıştırmak için, bir işlemin bellek içeriği üzerinde bir hata ayıklayıcı çalıştırmak için temel dökümler gerekliydi.

Çekirdek dökümler sırasında serbest bırakılan verileri yakalamak için kullanılabilir. dinamik bellek tahsisi ve bu nedenle artık çalışmayan bir programdan bilgi almak için kullanılabilir. Etkileşimli bir hata ayıklayıcının yokluğunda, çekirdek dökümü, hatayı doğrudan incelemeden belirlemek için kararlı bir programcı tarafından kullanılabilir.

Analiz

Bir çekirdek dökümü, dökümü yapılan sürecin adres alanının dökülmüş bölgelerinin tüm içeriğini temsil eder. İşletim sistemine bağlı olarak, döküm, bellek bölgelerinin yorumlanmasına yardımcı olmak için çok az veri yapısı içerebilir veya hiç içermeyebilir. Bu sistemlerde başarılı yorumlama, dökümü yorumlamaya çalışan programın veya kullanıcının programın bellek kullanımının yapısını anlamasını gerektirir.

Bir hata ayıklayıcı bir sembol tablosu eğer varsa, programcının dökümleri yorumlamasına yardımcı olmak, değişkenleri sembolik olarak tanımlamak ve kaynak kodunu görüntülemek; sembol tablosu mevcut değilse, dökümün daha az yorumlanması mümkündür, ancak yine de sorunun nedenini belirlemek için yeterince olası olabilir. Ayrıca adı verilen özel amaçlı araçlar da vardır. döküm analizörleri dökümleri analiz etmek için. Birçok işletim sisteminde bulunan popüler araçlardan biri, GNU binutils'tir. objdump.

Modern üzerine Unix benzeri işletim sistemleri, yöneticiler ve programcılar GNU Binutils'i kullanarak çekirdek döküm dosyalarını okuyabilir İkili Dosya Tanımlayıcı kitaplığı (BFD) ve GNU Hata Ayıklayıcı (gdb) ve bu kitaplığı kullanan objdump. Bu kitaplık, bir bellek bölgesindeki belirli bir adres için ham verileri bir çekirdek dökümünden sağlayacaktır; o bellek bölgesindeki değişkenler veya veri yapıları hakkında hiçbir şey bilmediğinden, çekirdek dökümü okumak için kitaplığı kullanan uygulamanın değişkenlerin adreslerini belirlemesi ve örneğin sembol tablosunu kullanarak veri yapılarının düzenini kendisinin belirlemesi gerekecektir. hata ayıklamaya uğrayan program için.

Çarpışma dökümlerinin analistleri Linux sistemler kullanabilir kdump veya Linux Kernel Crash Dump (LKCD).[7]

Çekirdek dökümler, daha sonra geri dönmek için belirli bir durumdaki bir sürecin bağlamını (durumunu) kaydedebilir. Çekirdek işlemciler arasında, bazen çekirdek döküm dosyalarının kendileri aracılığıyla aktarılarak sistemler yüksek oranda kullanılabilir hale getirilebilir.

Çekirdek ayrıca bir ağ üzerinden uzaktaki bir ana bilgisayara da atılabilir (bu bir güvenlik riskidir).[8]

Çekirdek döküm dosyaları

Biçim

Daha eski ve daha basit işletim sistemlerinde, her işlemin bitişik bir adres alanı vardı, bu nedenle bir döküm dosyası bazen sadece bayt, rakam,[b] karakterler[b] veya kelimeler. Diğer eski makinelerde bir döküm dosyası, her biri bir depolama adresi ve ilişkili içerikleri içeren ayrı kayıtlar içeriyordu. Eski makinelerde, döküm genellikle uygulama veya işletim sistemi yerine bağımsız bir döküm programı tarafından yazılıyordu.

Üzerinde IBM System / 360 standart işletim sistemleri, tümü yazdırılabilir formlara dönüştürülmüş adresler, kayıtlar, depolama içerikleri vb. ile biçimlendirilmiş ABEND ve SNAP dökümleri yazdı. Daha sonraki sürümler, biçimlendirilmemiş yazma yeteneğini ekledi[c] o zaman çekirdek görüntü dökümleri olarak adlandırılan dökümler.

Modern işletim sistemlerinde, bir işlem adres alanı boşluklara sahip olabilir ve sayfaları diğer işlemlerle veya dosyalarla paylaşabilir, bu nedenle daha ayrıntılı temsiller kullanılır; döküm sırasında programın durumu hakkında başka bilgiler de içerebilirler.

İçinde Unix benzeri sistemler, temel çöplükler genellikle standardı kullanır çalıştırılabilir görüntü-biçim:

Adlandırma

OS / 360 ve halefleri

  • İçinde OS / 360 ve halefleri, bir iş ddnames'e rastgele veri seti adları (DSN'ler) atayabilir SYSABEND ve SYSUDUMP biçimlendirilmiş bir ABEND dökümü için ve SNAP dökümleri için isteğe bağlı ddnames için veya bu dd adlarını SYSOUT olarak tanımlayın.[d]
  • Hasar Tespit ve Onarım (DAR) tesisi, otomatik olarak biçimlendirilmemiş bir[f] veri kümesine dökmek SYS1.DUMP[g] arıza anında ve operatör tarafından talep edilen bir konsol dökümü.
  • Yeni işlem dökümü, eski döküm biçimlerine çok benzer.

Unix benzeri

  • Solaris 8'den beri, sistem yardımcı programı coreadm çekirdek dosyaların adı ve konumunun yapılandırılmasına izin verir.
  • Kullanıcı işlemlerinin dökümleri geleneksel olarak şu şekilde oluşturulur: çekirdek. Linux'ta (2.4.21 ve 2.6 sürümlerinden beri Linux çekirdek ana hattı ), üzerinden farklı bir ad belirtilebilir procfs kullanmak / proc / sys / kernel / core_pattern yapılandırma dosyası; belirtilen ad, örneğin çalıştırılabilir dosya adı, işlem kimliği veya dökümün nedeni ile değiştirilen etiketleri içeren bir şablon da olabilir.[9]
  • Modern Unix benzeri sistemlerdeki sistem genelindeki dökümler genellikle şu şekilde görünür: vmcore veya vmcore.incomplete.

Diğerleri

Windows bellek dökümleri

Microsoft Windows aşağıda açıklanan iki bellek dökümü biçimini destekler.

Çekirdek modu dökümleri

Beş tür çekirdek modu dökümü vardır:[10]

  • Tam bellek dökümü - hedef sistem için tam fiziksel bellek içerir.
  • Çekirdek bellek dökümü - çökme anında çekirdek tarafından kullanılan tüm belleği içerir.
  • Küçük bellek dökümü - durdurma kodu, parametreler, yüklü aygıt sürücülerinin listesi vb. Gibi çeşitli bilgileri içerir.
  • Otomatik Bellek Dökümü (Windows 8 ve üzeri) - Çekirdek bellek dökümü ile aynıdır, ancak Disk belleği dosyası hem Sistem Tarafından Yönetilir hem de Çekirdek bellek dökümünü yakalamak için çok küçükse, disk belleği dosyasını otomatik olarak dört hafta boyunca en azından RAM boyutuna yükseltir ve ardından daha küçük boyuta indirir.[11]
  • Etkin bellek dökümü (Windows 10 ve üstü) - çekirdek ve kullanıcı modu uygulamaları tarafından kullanılan belleğin çoğunu içerir.

Windows çekirdek modu dökümlerini analiz etmek için Windows için Hata Ayıklama Araçları kullanılmış.[12]

Kullanıcı modu bellek dökümleri

Kullanıcı modu bellek dökümü olarak da bilinir minidump,[13] tek bir işlemin bellek dökümüdür. Seçilen veri kayıtlarını içerir: tam veya kısmi (filtrelenmiş) işlem belleği; listesi İş Parçacığı onların çağrı yığınları ve durum (örneğin kayıtlar veya TEB ); hakkında bilgi kolları çekirdek nesnelerine; yüklü ve yüksüzler listesi kütüphaneler. Mevcut seçeneklerin tam listesi MINIDUMP_TYPE Sıralama.[14]

Uzay görevleri

NASA Voyager programı Muhtemelen Derin Uzay segmentinde çekirdek boşaltma özelliğini rutin olarak kullanan ilk araçtı. Temel boşaltma özelliği, sistem tanılama maliyetlerini en aza indirdiği kanıtlanmış olan Derin Uzay segmenti için zorunlu bir telemetri özelliğidir.[kaynak belirtilmeli ]. Voyager aracı, bellek hasarını tespit etmek için rutin temel dökümleri kullanır. Kozmik ışın Etkinlikler.

Uzay Görev çekirdek boşaltma sistemleri çoğunlukla hedef CPU veya alt sistem için mevcut araç setlerine dayanır. Bununla birlikte, bir görevin süresi boyunca, çekirdek döküm alt sistemi, görevin özel ihtiyaçları için büyük ölçüde değiştirilebilir veya geliştirilebilir.

Ayrıca bakınız

Referanslar

  1. ^ "AIX 7.1 bilgileri".[kalıcı ölü bağlantı ]
  2. ^ çekirdek (4): Çekirdek dosyayı işle -Solaris 10 Dosya Biçimleri Referansı Manuel
  3. ^ Cory Janssen. "Veritabanı Dökümü nedir? - Techopedia'dan Tanım". Techopedia.com. Alındı 29 Haziran 2015.
  4. ^ "Bir bilgisayar tam bir bellek dökümünü yakalayacak şekilde nasıl yapılandırılır". sophos.com. 12 Temmuz 2010. Alındı 29 Haziran 2015.
  5. ^ Oxford ingilizce sözlük, s.v. 'çekirdek'
  6. ^ "depolama dökümü tanımı".
  7. ^ Venkateswaran, Sreekrishnan (2008). Temel Linux aygıt sürücüleri. Prentice Hall açık kaynak yazılım geliştirme serisi. Prentice Hall. s. 623. ISBN  978-0-13-239655-4. Alındı 2010-07-15. Kdump gelene kadar, Linux Kernel Crash Dump (LKCD), dökümleri elde etmek ve analiz etmek için popüler bir mekanizmadır.
  8. ^ Fedora Dokümantasyon Projesi (2010). Fedora 13 Güvenlik Kılavuzu. Fultus Corporation. s. 63. ISBN  978-1-59682-214-6. Alındı 2010-09-29. Uzaktan bellek dökümü hizmetleri netdump, bellek içeriğini şifrelenmemiş ağ üzerinden iletin.
  9. ^ "core (5) - Linux kılavuz sayfası". man7.org. 2015-12-05. Alındı 2016-04-17.
  10. ^ "Çekirdek Modu Döküm Dosyası Çeşitleri". Microsoft. Alındı 22 Şubat 2018.
  11. ^ "Otomatik Bellek Dökümü". Microsoft. 28 Kasım 2017. Alındı 16 Mart 2018.
  12. ^ "WinDbg'ye Başlarken (Kernel Modu)". Alındı 30 Eylül 2014.
  13. ^ "Minidump Dosyaları". Alındı 30 Eylül 2014.
  14. ^ "MINIDUMP_TYPE numaralandırması". Alındı 30 Eylül 2014.

Notlar

  1. ^ Dönem çekirdek çağdaş donanımda geçerliliğini yitirmiştir, ancak birçok sistemde tarihsel nedenlerle kullanılmaktadır.
  2. ^ a b Bazı eski makineler ondalık.
  3. ^ Kayıtların baskı için biçimlendirilmiş olmaktan çok ikili olması anlamında.
  4. ^ SYStem OUTput dosyaları (SYSOUT) dosyaları, MAKARA yazılım.
  5. ^ Başlangıçta toplu iş programı IMDPRDMP; şu anda TSO komutu ve ISPF Etkileşimli Problem Kontrol Sistemi (IPCS) için panel repertuvarı.
  6. ^ IBM, biçimlendirilmemiş bir dökümden veri çıkarmak ve biçimlendirmek için araçlar sağladı; bu araçlar[e] genellikle biçimlendirilmemiş bir dökümle uğraşmayı küçük biçimlendirilmiş bir dökümden bile daha kolay hale getirdi.
  7. ^ O zamandan beri birkaç isim değişikliği oldu ve z / OS rastgele ds adlarına sahip birden çok sistem dökümü veri kümesini destekler.

Dış bağlantılar

Dosya formatının açıklamaları

Çekirdek çekirdek dökümleri: