web-dev-qa-db-fra.com

Comment voir le fichier CoreDump?

Lorsque vous signalez un bogue à partir d'un crash, le bogue devient privé et un fichier appelé CoreDump.gz. La documentation sur le tri des bogues indique ce qui suit:

Si le plantage a toujours une pièce jointe CoreDump.gz, il n’était pas possible d’obtenir automatiquement une trace de pile entièrement symbolique et de rechercher les doublons.

Stacktrace.txt semble lisible par un humain. Comment puis-je comprendre le sens d'une trace de pile. CoreDump avec CoreDump.gz ne semble pas lisible par l'homme. Qu'est-ce qu'une "trace de pile entièrement symbolique"? Quelle est la différence entre une "trace de pile entièrement symbolique"? Comment afficher le contenu d'un fichier CoreDump? (essayé 'chat', mais ce n'est pas propre)

13
komputes

Coredump.gz est la mémoire (compressée) accessible par le programme qui s'est bloqué. C'est un fichier binaire. Les coredumps sont un trésor, avec toutes sortes de données privées à exploiter.

Les coredumps peuvent être visualisés en lançant 'gdb':

gdb --core=mycoredump

Bien sûr, vous aurez toujours besoin des packages de débogage associés à ce noyau.

Vous pouvez alors générer un stacktrace en:

(gdb) bt

générer un stacktrace du thread actuel - sans résolution de paramètre -, ou

(gdb) thread apply all bt full

générer un stacktrace de tous les threads dans le coredump, avec la résolution de paramètre.

stacktrace et full stacktraces montrent le flux de contrôle au sein d'un programme. Pour Python, le haut de la pile affiche l’appel le plus ancien, le plus récent en bas; pour à peu près tout le reste, l'appel le plus récent est en haut et le plus ancien en bas.

Un stacktrace complet affichera non seulement le flux, mais également les valeurs du paramètre. C’est là que nous trouvons généralement des données privées - par exemple, supposons que vous voyiez une fonction appelée "validatePassword" avec un paramètre appelé "Mot de passe" et une valeur de "MySecretPassword" ...

Les pistes de pile ne sont généralement utiles que si les packages de débogage sont installés (afin que les trames de pile puissent être résolues en quelque chose que nous puissions facilement lire). L'analyse d'un stacktrace nécessitera d'avoir les sources utilisées pour créer cette instance de programme spécifique.

15
hggdh