Per generare core dump su Busybox possiamo aggiungere i seguenti parametri nello script di inizializzazione che esegue il nostro eseguibile. Pertanto, ogni volta che inizializziamo il software ed esportiamo le variabili di ambiente, possiamo copiare le righe sottostanti nello script e scaricare il core nel caso in cui si verifichino crash.
Per impostare la posizione dei dump principali in Busybox è possibile impostare il percorso del file core utilizzando il file system proc. Ad esempio, se desideri core dump in /tmp/crash/corefiles
:
mkdir -p /tmp/crash/corefiles
chmod 775 /tmp/crash/corefiles
echo "/tmp/crash/corefiles/%e.%s.core" > /proc/sys/kernel/core_pattern
Dove sono le variabili:
% e è il nome file
% g è il gid in cui il processo era in esecuzione sotto
% p è il pid del processo
% s è il segnale che ha causato il dump
% t è il tempo in cui si è verificato il dump
% u è il uid in cui il processo era in esecuzione
Inoltre, devi impostare la dimensione del file core, sotto il comando imposta la dimensione del file core su illimitata
ulimit -c unlimited
Ora per verificare la dimensione del file core impostata per ogni thread all'interno di un processo che possiamo verificare usando
cat /proc/<PID>/limits
L'output del comando precedente:
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size unlimited unlimited bytes
Max open files 10000 10000 files
Max address space unlimited unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 31868 31868 processes
Max locked memory 65536 65536 bytes
Max file locks unlimited unlimited locks
Max pending signals 31868 31868 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
Come possiamo vedere dall'output sopra, la dimensione massima del file core è impostata su illimitata.
Per maggiori informazioni, visita questo link.
Tecniche di debug di applicazioni Linux / file core