Man mag (5) Az eljárás memóriaképfájlba
mag (5) Az eljárás memóriaképfájlt
Bizonyos jelek alapértelmezett művelet megszakítja a folyamatot és a teremtés, az eljárás során a kép memória idején befejezése memóriaképfájlt folyamat --- disk fájlt. Ez a kép lehet használni, mint egy debugger (pl gdb (1) bekezdés) a kutatási program az állam idején annak befejezését. A lista a jelek, amelyek eredményeként a létrehozás folyamata memóriaképfájlokat, megtalálható a jel (7).
A folyamat lehet beállítani a soft limit az erőforrás RLIMIT_CORE a maximális értéket a méret a kiírási fájl jön létre, ha a folyamat olyan jelet kap „dump”; A részleteket lásd getrlimit (2).
Számos körülmények, amelyek a memória dump fájl nem jön létre:
Elnevezése memóriaképfájljainak
Alapértelmezésben a fájl van rendelve memóriakiíratás mag nevét. de a fájl a / proc / sys / kernel / core_pattern (mivel a Linux 2.6 és 2.4.21), megadhat egy sablont, amelyeket használni fognak elnevezésére memóriaképfájljainak. A sablon tartalmazhat% előírást, amelyek helyébe a következő értékeket memóriaképfájlt:
%% egy karakter %% c soft összeomlott eljárás kiírása fájl mérete (mivel a Linux 2.6.24). lerakó mód - ugyanaz, mint a visszatérési értéke a prctl (2) PR_GET_DUMPABLE (mivel a Linux 3,7)% E végrehajtható neve (anélkül, hogy a path)% E elérési utat a futtatható fájl, amely vágás ( „/”) helyébe felkiáltójelek ( '!') (mivel a Linux 3.0). % G (száma) valós GID folyamat, ami történik billenő% h host nevét (például csomópontnévhez. Vissza uname (2) bekezdés)% i TID fonal miatt, amely eredetileg lerakó képest a tér PID nevek, amelyek a menet (mivel a Linux 3,18)% I. TID fonal miatt, amely eredetileg lerakó, viszonyítva a kezdeti helyet PID neve (kezdve Linux 3,18)% p PID folyamat, amely a lerakó, mint ez látható a névtérben PID, ahol az eljárás% P kezdeti PID folyamat, ami történik, a lerakó, mint ez látható az eredeti névtérben PID, ami található százalékos ESA (mivel Linux 3,12)% s szignál száma miatt létrehozását lerakó lerakó% t idő, másodpercben kifejezve, mivel az Epoch, 1970-01-01 00:00:00 +0000 (UTC)% u (száma) a valódi UID a folyamat ahonnan egy szeméttelep
Egy% végén a sablon kikerül a kiírási fájl nevét egy szimbólum után% felsoroltaktól eltérő korábban. Az összes többi karakter a sablont helyezünk a lerakó fájlnevet, ahogy van. A sablon tartalmazhat karaktereket „/”, amely értelmezi határolójelek a könyvtár nevét. A maximális méret a keletkező lerakó fájlnév 128 bájt (64 byte az atommagok verzió 2.6.19). Az alapértelmezett érték ebben a fájlban ugyanazt a „mag”. A visszafelé kompatibilitás miatt, ha a / proc / sys / kernel / core_pattern tartalmaz "% p" értékét és / proc / sys / kernel / core_uses_pid (cm. Az alábbiakban) nem egyenlő nullával, akkor a lerakó a fájlnév .PID.
Mivel 2.4-es Linux is rendelkezik egy primitív eljárás is a neve a kiírása. Ha a fájl a / proc / sys / kernel / core_uses_pid tartalmazza a 0 értéket, memóriaképfájlt egyszerűen hívják mag. Ha ez a fájl tartalmaz egy nem nulla értékű, a billenő fájlnevet adunk a folyamat azonosító (formájában core.PID).
Mivel a Linux 3.6, ha az érték a / proc / sys / fs / suid_dumpable 2 ( «suidsafe»), a sablon legyen abszolút elérési utat (kezdje a karakter „/”), vagy a csatorna bemutatjuk.
Transzfer memóriaképfájlt programot a csatornán
Verziótól kezdődően 2.6.19 Linux támogatja egy alternatív szintaxist a fájl a / proc / sys / kernel / core_pattern. Ha az első karakter a fájl a csatorna szimbólum (|), majd a maradék sort, mint egy programot kell futtatni. Ahelyett, hogy az írás a fájlt a lemezre memóriaképfájlokat továbbítjuk a standard input a program. Vegye figyelembe az alábbiakat: * A programot át kell adni az abszolút fájlnevet (vagy egy utat képest a gyökér /), és a nevét kell azonnal követni a karakter „|”. * Ahhoz, hogy hozzon létre egy folyamat fut a program fog futni a root felhasználó és csoport. * Program átadhatók parancssori (mivel a Linux 2.6.24), elválasztva a terek (a maximális sor mérete 128 bájt). * A parancssori argumentumok lehetnek leírók% fentebb felsorolt. Például, hogy adja át a PID a folyamat, amelyre a dump történik, adja meg az az érv% p.
megjelenítésvezérlést rögzített memóriaképfájlt
Verziótól kezdődően 2.6.23 Linux meg a fájl / proc / PID / coredump_filter. amely meghatározza az adott memória szegmensek íródnak memóriaképfájlba amikor a válasz az esemény létrehozásának folyamata memóriaképe a megfelelő folyamat azonosítója.
Jelentés a fájl egy bitmask típusú memória térképek (lásd. Mmap (2) bekezdés). Ha a maszk bit be van állítva, akkor a kijelző megfelelő lerakó memória típusa; egyébként a lerakó nem kerül végrehajtásra. A bitek ezt a fájlt jelentése a következő:
bit 0 Dump anonim saját leképezések. bit 1 Dump névtelen megosztott leképezések. 2. bit Dump saját leképezés a virtuális memória (fájl-támogatott). bit 3 Dump közös leképezés a virtuális memória (fájl-támogatott). Bit 4 (mivel a Linux 2.6.24) Végezze el a lerakó ELF fejlécét. 5. bit (mivel a Linux 2.6.28) Billenő saját hatalmas oldalakon. Bit 6 (mivel a Linux 2.6.28) Billenő általános hatalmas oldalakon. 7. bit (mivel a Linux 4.4) Billenő saját DAX oldalakon. 8 bit (mivel a Linux 4.4) Billenő közös DAX oldalakon.
Alapértelmezés szerint a következő bit értékét: 0, 1, 4 (ha engedélyezett kernel konfigurációs paraméter CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS) és 5. Ez az érték megváltoztatható a rendszer indításakor beállításával coredump_filter betöltése.
Ennek értéke fájl megjelenik hexadecimálisat (azaz az alapértelmezett külleme 33).
Oldalaknál az input-output, megjelenik a memória, például egy frame buffer, a lerakó soha nem elégedett, és a virtuális DSO oldalak esnek a lerakó mindig, függetlenül attól, hogy az értéket coredump_filter.
A gyermek folyamat által létrehozott villa (2), az értéket örökli coredump_filter szülő; coredump_filter érték van tárolva, és execve (2).
Hasznos coredump_filter meg értéket a szülő burkolat megkezdése előtt a program, például:
Ez a fájl a rendszer csak akkor, ha a kernel került lefordításra CONFIG_ELF_CORE beállításokat.
Command gdb (1) gcore lehet használni kiírási a munkafolyamatot.
A Linux verzió 26.27 befogadó, ha többszálú folyamat (vagy pontosabban egy olyan folyamat, amely megosztja a memória egy másik folyamat létrehozott CLONE_VM keresztül a klón (2) bekezdés) végeztük memóriakiíratás, a folyamat azonosítóját mindig csatolni kell a lerakó fájl nevét, ha a folyamat azonosító nem szerepel a neve keresztül% p / proc / sys / kernel / core_pattern (ez főleg akkor hasznos, ha alkalmazott régi végrehajtására LinuxThreads, ahol mindegyik szál saját PID).
Ez a program használható annak bizonyítására, a szintaxis a csatorna a file / proc / sys / kernel / core_pattern. Az alábbi héj ülés használatát mutatja be ezt a programot (futtatható fájl neve core_pattern_pipe_test jött létre, amikor összeállítása):