Core dump et backtrace
Core dump présent sans backtrace
Un fichier core dump peut être présent sans qu’aucune pile d’appels (backtrace) ne soit visible immédiatement.
Un core dump contient uniquement l’état mémoire du processus au moment du crash.
Pour obtenir une backtrace, il faut analyser ce dump avec un débogueur comme gdb.
Avec systemd, l’outil coredumpctl simplifie cette opération.
Pourquoi le core dump ne contient pas directement de backtrace
coredumpctl(composant de systemd) enregistre les dumps compressés au format.zst.- Le fichier est stocké sous :
/var/lib/systemd/coredump/
- Le dump contient l’image mémoire du processus, mais pas l’analyse de la pile.
- La backtrace est générée uniquement lorsqu’on ouvre le dump dans un débogueur.
Extraire immédiatement une backtrace
La commande suivante lance gdb automatiquement sur le dernier core dump du programme indiqué.
sudo coredumpctl debug /usr/bin/llama-server \
--debugger-arguments="-batch -ex 'set pagination off' -ex 'info threads' -ex 'thread apply all bt full' -ex quit"
Signification des options
| Élément | Description |
|---|---|
coredumpctl debug |
ouvre le dernier dump du programme |
/usr/bin/llama-server |
binaire ayant généré le crash |
-batch |
exécution non interactive |
info threads |
liste les threads |
thread apply all bt full |
backtrace complète de tous les threads |
set pagination off |
désactive la pagination |
quit |
quitte gdb après exécution |
La sortie contient la pile d’appels complète et peut être copiée dans un rapport d’incident.
Archiver un core dump
Pour conserver le dump :
sudo coredumpctl --output=/root/core.llama-server.32514 dump /usr/bin/llama-server
Le fichier sera copié depuis le stockage systemd vers le chemin indiqué.
Si le fichier est compressé :
zstd -d file.zst -o file
Exporter la backtrace dans un fichier
sudo coredumpctl debug /usr/bin/llama-server \
--debugger-arguments="-batch -ex 'set pagination off' -ex 'info threads' -ex 'thread apply all bt full' -ex quit" \
| tee /tmp/llama-backtrace.txt
Récupérer le contexte du journal
Les logs précédant le crash peuvent aider à comprendre l’origine du problème.
sudo journalctl -u llama-server.service -b --no-pager -n 200
Options :
| Option | Description |
|---|---|
-u |
service systemd |
-b |
journal du boot courant |
-n |
nombre de lignes |
--no-pager |
sortie directe |
Checklist minimale
- Vérifier la présence du dump dans
/var/lib/systemd/coredump. - Extraire la backtrace avec
coredumpctl debug. - Archiver le dump si nécessaire.
- Collecter les logs avec
journalctl. - joindre backtrace et logs au rapport d’incident.