Výpis jádra - Core dump

Ve výpočtu , je jádro skládka , výpis paměti , stavem , výpisem systém , nebo ABEND výpisem sestává z nahraného stavu pracovní paměti jednoho počítačového programu v době konkrétní, obvykle v případě, že program narazil nebo jinak abnormálně ukončena. V praxi se obvykle vypisují současně další klíčové části stavu programu , včetně registrů procesoru , které mohou zahrnovat počítadlo programu a ukazatel zásobníku , informace o správě paměti a další příznaky a informace procesoru a operačního systému. Snímek dump (nebo snap dump ) je výpis paměti na žádost provozovatele počítače , nebo běžící program, po kterém program je schopen pokračovat ve hře. Skládky jádra se často používají k diagnostice a ladění chyb v počítačových programech.

V mnoha operačních systémech fatální výjimka v programu automaticky spustí výpis jádra. Rozšířením výraz „vypsat jádro“ v mnoha případech znamená jakoukoli závažnou chybu, bez ohledu na to, zda existuje záznam paměti programu. Termín „výpis jádra“, „výpis paměti“ nebo jen „výpis“ se také stal žargonem, který označuje jakýkoli výstup velkého množství nezpracovaných dat pro další zkoumání nebo jiné účely.

Pozadí

Název pochází z paměti s magnetickým jádrem , hlavní formy paměti s náhodným přístupem od padesátých do sedmdesátých let. Název zůstal dlouho poté, co technologie magnetického jádra zastarala.

Nejstarší výpisy jádra byly papírové výtisky obsahu paměti, obvykle uspořádané do sloupců osmičkových nebo hexadecimálních čísel („ hexadecimální výpis “), někdy doprovázených jejich interpretacemi jako instrukce strojového jazyka , textové řetězce nebo čísla v desetinné čárce nebo s plovoucí desetinnou čárkou ( viz disassembler ).

Jak se zvětšovala velikost paměti a byly vyvinuty nástroje pro posmrtnou analýzu, skládky byly zapisovány na magnetická média, jako je páska nebo disk.

Místo toho, aby zobrazovaly pouze obsah příslušné paměti, moderní operační systémy obvykle generují soubor obsahující obrázek paměti patřící k havarovanému procesu nebo obrazy paměti částí adresního prostoru souvisejícího s tímto procesem spolu s dalšími informacemi, jako je jako hodnoty registrů procesoru, počítadla programů, systémových příznaků a dalších informací užitečných při určování hlavní příčiny selhání. Tyto soubory lze zobrazit jako text, vytisknout nebo analyzovat pomocí specializovaných nástrojů, jako je elfdump v systémech Unix a Unix , objdump a kdump v systému Linux , IPCS (Interactive Problem Control System) v systému IBM System z , WinDbg v systému Microsoft Windows, Valgrind nebo jiné ladicí programy.

V některých operačních systémech může aplikace nebo operátor požadovat snímek vybraných bloků úložiště, spíše než veškerou paměť používanou aplikací nebo operačním systémem.

Použití

Skládky jádra mohou sloužit jako užitečné ladicí pomůcky v několika situacích. Na časných samostatných systémech nebo systémech dávkového zpracování umožňovalo jádrové výpisy uživateli ladit program bez monopolizace (velmi nákladného) výpočetního zařízení pro ladění; výtisk může být také pohodlnější než ladění pomocí přepínačů a světel na předním panelu .

Na sdílených počítačích, ať už se jedná o sdílení času, dávkové zpracování nebo serverové systémy, umožňují základní výpisy offline ladění operačního systému , takže se systém může okamžitě vrátit do provozu.

Skládky jádra umožňují uživateli uložit selhání pro pozdější analýzu nebo analýzu mimo server nebo srovnání s jinými selháními. U integrovaných počítačů může být nepraktické podporovat ladění na samotném počítači, takže analýza výpisu může probíhat na jiném počítači. Některé operační systémy, jako jsou dřívější verze Unixu , nepodporovaly připojování debuggerů ke spuštěným procesům, takže pro spuštění debuggeru na obsahu paměti procesu byly nutné základní výpisy.

Výpisy jádra lze použít k zachycení dat uvolněných během dynamické alokace paměti a lze je tedy použít k načtení informací z programu, který již není spuštěn. Při absenci interního ladicího programu může být jádrový výpis použit neúnavným programátorem k určení chyby z přímého prozkoumání.

Snap dumps jsou někdy pohodlným způsobem, jak aplikace zaznamenávají rychlý a špinavý výstup ladění.

Analýza

Skládka jádra obecně představuje úplný obsah vypsaných oblastí adresového prostoru vypsaného procesu. V závislosti na operačním systému může výpis obsahovat několik nebo žádné datové struktury, které by pomohly interpretovat oblasti paměti. V těchto systémech vyžaduje úspěšná interpretace, aby program nebo uživatel, který se pokouší interpretovat výpis, porozuměl struktuře využití paměti programu.

Debugger může použít tabulku symbolů , pokud existuje, aby pomohl programátorovi interpretovat výpisy, symbolicky identifikovat proměnné a zobrazit zdrojový kód; pokud tabulka symbolů není k dispozici, je možná menší interpretace výpisu, ale stále může být dost možné určit příčinu problému. Existují také speciální nástroje zvané analyzátory výpisů pro analýzu výpisů. Jedním z populárních nástrojů dostupných na mnoha operačních systémech je objdump GNU binutils .

Na moderních operačních systémech podobných Unixu mohou administrátoři a programátoři číst základní soubory výpisu pomocí knihovny GNU Binutils Binary File Descriptor (BFD) a GNU Debugger (gdb) a objdump, které tuto knihovnu používají. Tato knihovna dodá nezpracovaná data pro danou adresu v oblasti paměti z výpisu jádra; neví nic o proměnných nebo datových strukturách v dané oblasti paměti, takže aplikace používající knihovnu ke čtení výpisu jádra bude muset určit adresy proměnných a určit samotné rozložení datových struktur, například pomocí tabulky symbolů pro program procházející laděním.

Analytici havarijních výpisů ze systémů Linux mohou použít kdump nebo Linux Kernel Crash Dump (LKCD).

Skládky jádra mohou uložit kontext (stav) procesu v daném stavu pro pozdější návrat. Systémy mohou být vysoce dostupné přenosem jádra mezi procesory, někdy prostřednictvím samotných souborů výpisu jádra.

Core lze také vypsat na vzdáleného hostitele přes síť (což je bezpečnostní riziko).

Soubory výpisu jádra

Formát

Ve starších a jednodušších operačních systémech měl každý proces souvislý adresní prostor, takže soubor výpisu byl někdy jednoduše soubor se sekvencí bajtů, číslic, znaků nebo slov. Na jiných starších počítačích obsahoval soubor výpisu diskrétní záznamy, z nichž každý obsahoval adresu úložiště a přidružený obsah. Na časných počítačích byl výpis často napsán samostatným programem výpisu, nikoli aplikací nebo operačním systémem.

V systému IBM System / 360 standardní operační systémy zapisovaly naformátované výpisy ABEND a SNAP s adresami, registry, obsahem úložiště atd., Všechny převedené do tisknutelných formulářů. Pozdější verze přidala možnost zapisovat neformátované skládky, které se v té době nazývaly skládky jádra.

V moderních operačních systémech může mít adresní prostor procesu mezery a sdílet stránky s jinými procesy nebo soubory, takže se používají propracovanější reprezentace; mohou také obsahovat další informace o stavu programu v době výpisu.

V systémech podobných Unixu jádrové skládky obvykle používají standardní spustitelný formát obrazu :

Pojmenování

OS / 360 a jeho nástupci

  • V OS / 360 a jeho nástupcích může úloha přiřadit libovolné názvy datových souborů (DSN) ddnames SYSABEND a SYSUDUMP pro formátovaný výpis ABEND a libovolné ddnames pro SNAP dump nebo definovat tyto ddnames jako SYSOUT.
  • Zařízení pro posuzování a opravy poškození (DAR) přidalo do datové sady automatický neformátovaný výpis SYS1.DUMP v době selhání, stejně jako výpis z konzoly požadovaný operátorem.
  • Novější výpis z transakce je velmi podobný starším formám výpisů.

Unixový

  • Od verze Solaris 8 coreadm umožňuje systémový nástroj konfigurovat název a umístění základních souborů.
  • Výpisy uživatelských procesů jsou tradičně vytvářeny jako core . V systému Linux (od verze 2.4.21 a 2.6 hlavní řady jádra Linuxu ) lze pomocí procfs pomocí /proc/sys/kernel/core_pattern konfiguračního souboru zadat jiný název ; zadaným názvem může být také šablona, ​​která obsahuje značky nahrazené například spustitelným názvem souboru, ID procesu nebo důvodem výpisu.
  • Systémové skládky na moderních systémech podobných Unixu se často zobrazují jako vmcore nebo vmcore.incomplete .

Ostatní

  • Systémy jako Microsoft Windows , které používají přípony souborů , mohou používat přípony .dmp ; například skládky jádra mohou být pojmenovány memory.dmp nebo \Minidump\Mini051509-01.dmp .

Výpisy paměti Windows

Microsoft Windows podporuje dva formáty výpisu paměti, popsané níže.

Výpisy v režimu jádra

Existuje pět typů výpisů v režimu jádra:

  • Kompletní výpis paměti - obsahuje plnou fyzickou paměť pro cílový systém.
  • Výpis paměti jádra - obsahuje veškerou paměť používanou jádrem v době havárie.
  • Malý výpis paměti - obsahuje různé informace, jako je stop kód, parametry, seznam načtených ovladačů zařízení atd.
  • Automatický výpis paměti (Windows 8 a novější) - stejný jako výpis paměti jádra, ale pokud je stránkovací soubor spravovaný systémem a je příliš malý na to, aby zachytil výpis paměti jádra, automaticky zvětší stránkovací soubor alespoň na velikost RAM pro čtyři týdny, pak ji zmenšete na menší velikost.
  • Výpis aktivní paměti (Windows 10 a novější) - obsahuje většinu paměti používané aplikacemi jádra a uživatelského režimu.

K analýze výpisů režimu jádra systému Windows se používají ladicí nástroje pro Windows .

Výpisy paměti uživatelského režimu

Výpis paměti v uživatelském režimu, známý také jako minidump , je výpis paměti jednoho procesu. Obsahuje vybrané datové záznamy: úplná nebo částečná (filtrovaná) paměť procesu; seznam vláken s jejich hromadami volání a stavem (například registry nebo TEB ); informace o úchytech k objektům jádra; seznam načtených a nenaložených knihoven . Úplný seznam možností dostupných ve MINIDUMP_TYPE výčtu.

Vesmírné mise

Program NASA Voyager byl pravděpodobně první plavidlo, které běžně využívalo funkci skládky jádra v segmentu Deep Space. Funkce výpisu jádra je povinnou funkcí telemetrie pro segment Deep Space, protože bylo prokázáno, že minimalizuje náklady na diagnostiku systému. Plavidlo Voyager používá rutinní výpisy jádra k odhalení poškození paměti z událostí kosmického záření .

Systémy pro výpis jádra vesmírné mise jsou většinou založeny na existujících sadách nástrojů pro cílový procesor nebo subsystém. Během trvání mise však může být subsystém skládky jádra podstatně upraven nebo vylepšen pro konkrétní potřeby mise.

Viz také

Reference

Poznámky

externí odkazy

Popis formátu souboru

Výpisy jádra jádra: