GNU/Linux >> Linux Esercitazione >  >> Linux

Core scaricato, ma il file core non si trova nella directory corrente?

Leggi /usr/src/linux/Documentation/sysctl/kernel.txt.

core_pattern è utilizzato per specificare un nome di modello del file di dump principale.

  • Se il primo carattere del pattern è un '|', il kernel tratterà il resto del pattern come un comando da eseguire. Il core dump verrà scritto nello standard input di quel programma invece che in un file.

Invece di scrivere il core dump su disco, il tuo sistema è configurato per inviarlo al abrt (che significa:strumento di segnalazione automatica dei bug, non programma "abort"). Lo strumento di segnalazione automatica dei bug potrebbe non essere così documentato come dovrebbe essere...

In ogni caso, la risposta rapida è che dovresti essere in grado di trovare il tuo file principale in /var/cache/abrt , dove abrt lo memorizza dopo essere stato richiamato. Allo stesso modo, altri sistemi che utilizzano Apport potrebbero eliminare i core in /var/crash e così via.


Sul recente Ubuntu (12.04 nel mio caso), è possibile che venga stampato "Errore di segmentazione (core dump)", ma non viene prodotto alcun file core dove ci si potrebbe aspettare (ad esempio per un programma compilato localmente).

Questo può accadere se hai una dimensione del file core ulimit di 0 (non hai fatto ulimit -c unlimited ) -- questa è l'impostazione predefinita su Ubuntu. Normalmente ciò sopprimerebbe il "(core dumped)", indicandoti il ​​tuo errore, ma su Ubuntu, i corefile vengono reindirizzati ad Apport (il sistema di segnalazione degli arresti anomali di Ubuntu) tramite /proc/sys/kernel/core_pattern , e questo sembra causare il messaggio fuorviante.

Se Apport scopre che il programma in questione non è quello per cui dovrebbe segnalare arresti anomali (che puoi vedere accadere in /var/log/apport.log ), ricorre alla simulazione del comportamento predefinito del kernel di inserire un file core nel cwd (questo viene fatto nello script /usr/share/apport/apport ). Ciò include onorare ulimit, nel qual caso non fa nulla. Ma (presumo) per quanto riguarda il kernel, è stato generato un corefile (e reindirizzato ad apport), da qui il messaggio "Errore di segmentazione (core dumped)".

Alla fine PEBKAC per aver dimenticato di impostare ulimit, ma il messaggio fuorviante mi ha fatto pensare che stavo impazzendo per un po', chiedendomi cosa stesse mangiando i miei corefile.

(Inoltre, in generale, la pagina man core(5) -- man 5 core -- è un buon riferimento per sapere dove va a finire il tuo file principale e perché potrebbe non essere scritto.)


Linux
  1. Come creare una nuova finestra sulla directory corrente in Tmux?

  2. SVN controlla il contenuto di una cartella, non la cartella stessa

  3. come trovare il proprietario di un file o di una directory in python

  4. Trova i file esistenti in una directory ma non nell'altra

  5. Come uscire da Esplora file Ranger al prompt dei comandi ma mantenere la directory corrente?

Come trovare il file più vecchio in un albero di directory in Linux

Perché il modo seguente non cambia la dimensione del limite del file principale?

Confronta le directory ma non il contenuto dei file?

Python:nessun file o directory del genere ma posso vederlo!?

Il comando Shuf File> File lascia un file vuoto, ma comandi simili no??

Come copiare un file da un'altra directory a quella corrente?