Skládka jádra - Core dump
v výpočetní, a skládka jádra,[A] výpis paměti, výpis stavu systému, výpis systémunebo ABEND skládka[1] se skládá ze zaznamenaného stavu práce Paměť a počítačový program v konkrétním čase, obvykle, když program má havaroval nebo jinak neobvykle ukončeno.[2] V praxi další klíčové součásti stav programu jsou obvykle ukládány současně, včetně registry procesorů, které mohou zahrnovat čítač 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. A výpis stavu (nebo rychlá skládka) je výpis paměti požadovaný počítačový operátor nebo spuštěným programem, po kterém je program schopen pokračovat. Skládky jader se často používají k diagnostice a ladění chyby v počítačových programech.
V mnoha operačních systémech, a fatální výjimka v programu automaticky spustí výpis jádra. Ve větě znamená výraz „vypsat jádro“ v mnoha případech 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.[3][4]
Pozadí
Jméno pochází z paměť magnetického jádra,[5] hlavní forma paměť s náhodným přístupem od 50. do 70. let. Název zůstal dlouho poté, co technologie magnetického jádra zastarala.
Nejstarší skládky byly papírové výtisky[6] obsahu paměti, obvykle uspořádané do sloupců osmičkový nebo hexadecimální čísla (a „hexadecimální skládka "), někdy doprovázené jejich interpretacemi jako instrukce strojového jazyka, textové řetězce nebo desetinná čísla nebo čísla s plovoucí desetinnou čárkou (srov. demontážník ).
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 obrázky paměti částí adresní prostor související s tímto procesem, spolu s dalšími informacemi, jako jsou hodnoty registrů procesoru, počítadlo programu, příznaky systému a další informace užitečné 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 například elfdump Unix a Unixový systémy, objdump a kdump na Linux, WinDbg v systémech Microsoft Windows, Valgrind nebo jiných ladicích programech.
Použití
Skládky jádra mohou sloužit jako užitečné ladicí pomůcky v několika situacích. Na začátku samostatně nebo dávkové zpracování systémy, výpisy jádra umožňovaly 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ž použití ladění přední panel vypínače a světla.
Na sdílených počítačích, ať už sdílení času, dávkové zpracování nebo serverové systémy, skládky jádra umožňují off-line ladění operační systém, aby se systém mohl 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 lokalitu nebo srovnání s jinými selháními. Pro vestavěné počítače, 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 systému Windows Unix nepodporoval připojení debuggery běžícím procesům, takže pro spuštění ladicího programu na obsah paměti procesu byly nutné výpisy jádra.
Core dumps 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í.
Analýza
Skládka jádra představuje úplný obsah výpisů oblastí adresního prostoru výpisů. 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, rozuměl struktuře využití paměti programu.
Debugger může použít a tabulka symbolů, pokud existuje, pomoci programátorovi interpretovat skládky, 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é skládkové analyzátory analyzovat skládky. Jedním z populárních nástrojů dostupných na mnoha operačních systémech je GNU binutils objdump.
Na moderní Unixový operační systémy, administrátoři a programátoři mohou číst soubory s výpisem jádra pomocí GNU Binutils Knihovna deskriptorů binárních souborů (BFD) a GNU Debugger (gdb) a objdump, které používají tuto knihovnu. 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 skládek havárií z Linux systémy mohou používat kdump nebo Linux Kernel Crash Dump (LKCD).[7]
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).[8]
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,[b] postavy[b] nebo slova. 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.
Na IBM System / 360, standardní operační systémy psaly naformátované výpisy ABEND a SNAP s adresami, registry, obsahem úložiště atd., všechny převedené na tisknutelné formuláře. Pozdější verze přidala možnost psát neformátovaný[C] skládky, v té době nazývané skládky jádrového obrazu.
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 Unixový systémy, skládky jádra obecně používají standard spustitelný obraz-formát:
- a.out ve starších verzích Unix,
- ELF v moderní Linux, Systém V, Solaris, a BSD systémy,
- Mach-O v Operační Systém Mac, atd.
Pojmenování
OS / 360 a jeho nástupci
- v OS / 360 a jeho nástupci, úloha může ddnames přiřadit libovolné názvy datových sad (DSN)
SYSABEND
aSYSUDUMP
pro naformátovaný výpis ABEND a na libovolné ddnamy pro skládky SNAP nebo definujte tyto ddnames jako SYSOUT.[d] - Zařízení pro hodnocení a opravy poškození (DAR) přidalo automatický neformátovaný[F] výpis do datové sady
SYS1.DUMP
[G] v době selhání, stejně jako výpis konzoly požadovaný operátorem. - Novější výpis z transakce je velmi podobný starším formám výpisů.
Unixový
- Vzhledem k tomu, Solaris 8, systémový nástroj
coreadm
umožňuje konfigurovat název a umístění základních souborů. - Výpisy uživatelských procesů jsou tradičně vytvářeny jako
jádro
. V systému Linux (od verze 2.4.21 a 2.6 Hlavní linka linuxového jádra ), jiný název lze zadat pomocí procfs za použití/ proc / sys / kernel / core_pattern
konfigurační soubor; 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.[9] - Systémové skládky na moderních systémech podobných Unixu se často zobrazují jako
vmcore
nebovmcore.incomplete
.
Ostatní
- Systémy jako Microsoft Windows, které používají přípony souborů, může používat příponu
.dmp
; například mohou být pojmenovány skládky jádramemory.dmp
neboMinidump 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:[10]
- 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 stránkovací soubor je spravovaný systémem a příliš malý na to, aby zachytil výpis paměti jádra, automaticky zvýší stránkovací soubor alespoň na velikost RAM po dobu čtyř týdnů a poté jej zmenší na menší velikost.[11]
- 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.
Analyzovat skládky režimu jádra systému Windows Ladicí nástroje pro Windows Jsou používány.[12]
Výpisy paměti uživatelského režimu
Výpis paměti v uživatelském režimu, známý také jako minidump,[13] je výpis paměti jednoho procesu. Obsahuje vybrané datové záznamy: úplná nebo částečná (filtrovaná) paměť procesu; seznam vlákna s jejich hromádky hovorů a stát (např registry nebo TEB ); informace o rukojeti na objekty jádra; seznam naložených a vyložených knihovny. Úplný seznam možností dostupných v MINIDUMP_TYPE
výčet[14]
Vesmírné mise
The NASA Program Voyager byl pravděpodobně první plavidlo, které běžně využívalo funkci výpisu 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[Citace je zapotřebí ]. Plavidlo Voyager používá rutinní výpisy jádra, aby zjistilo poškození paměti kosmický paprsek Události.
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
- ^ „Informace AIX 7.1“.[trvalý mrtvý odkaz ]
- ^ Solaris 10 Odkaz na formáty souborů Manuál : Zpracovat základní soubor -
- ^ Cory Janssen. „What is a Database Dump? - Definition from Techopedia“. Techopedia.com. Citováno 29. června 2015.
- ^ "Jak nakonfigurovat počítač tak, aby zachytil kompletní výpis paměti". sophos.com. 12. července 2010. Citováno 29. června 2015.
- ^ Oxfordský anglický slovník, s.v. 'jádro'
- ^ "definice výpisu úložiště".
- ^ Venkateswaran, Sreekrishnan (2008). Základní ovladače zařízení Linux. Série vývojových programů open source softwaru Prentice Hall. Prentice Hall. p. 623. ISBN 978-0-13-239655-4. Citováno 2010-07-15.
Až do příchodu kdump, Výpadek jádra systému Linux (LKCD) byl populární mechanismus pro získávání a analýzu skládek.
- ^ Dokumentační projekt Fedory (2010). Průvodce zabezpečením Fedory 13. Fultus Corporation. p. 63. ISBN 978-1-59682-214-6. Citováno 2010-09-29.
Služby vzdáleného výpisu paměti, jako
netdump
, přenášet obsah paměti po síti nezašifrovaný. - ^ „core (5) - Linuxová manuální stránka“. man7.org. 2015-12-05. Citováno 2016-04-17.
- ^ "Odrůdy výpisových souborů v režimu jádra". Microsoft. Citováno 22. února 2018.
- ^ "Automatický výpis paměti". Microsoft. 28. listopadu 2017. Citováno 16. března 2018.
- ^ „Začínáme s WinDbg (režim jádra)“. Citováno 30. září 2014.
- ^ „Soubory minidump“. Citováno 30. září 2014.
- ^ „MINIDUMP_TYPE enumeration“. Citováno 30. září 2014.
Poznámky
- ^ Termín jádro je na současném hardwaru zastaralá, ale na mnoha systémech se používá z historických důvodů.
- ^ A b Některé starší stroje byly desetinný.
- ^ V tom smyslu, že záznamy byly spíše binární než formátované pro tisk.
- ^ Soubory SYStem OUTput (SYSOUT) jsou dočasné soubory vlastněné CÍVKA software.
- ^ Zpočátku dávkový nástroj IMDPRDMP; v současné době příkaz TSO a ISPF repertoár panelu pro Interactive Problem Control System (IPCS).
- ^ IBM poskytla nástroje pro extrakci a formátování dat z neformátovaného výpisu; ty nástroje[E] často usnadňovalo práci s neformátovaným výpisem než s malým formátovaným výpisem.
- ^ Od té doby došlo k několika změnám názvů a z / OS podporuje více datových sad systému s libovolnými dsnamy.
externí odkazy
Popis formátu souboru
- Linux Programátor Manuál - Formáty souborů –
- Solaris 10 Odkaz na formáty souborů Manuál –
- HP-UX 11i Formáty souborů Manuál –
- FreeBSD Formáty souborů Manuál –
- OpenBSD Formáty souborů Manuál –
- NetBSD Formáty souborů Manuál –
- Darwine a Operační Systém Mac Formáty souborů Manuál –
- Minidump soubory
Výpisy jádra jádra:
- Solaris 10 Reference k příkazům pro správu systému Manuál –
- Jablko Technická poznámka TN2118: Výpisy jádra jádra