Interception de signal avec dump de la pile d'appel

Magazine
Marque
GNU/Linux Magazine
Numéro
164
Mois de parution
octobre 2013
Spécialité(s)


Résumé
Juste avant qu'un programme se termine « anormalement », il peut être intéressant d'afficher la pile d'appel. Nous allons voir comment mettre cela en œuvre.

1. Définition

Une « backtrace » est une liste des appels de fonctions qui sont actuellement actifs dans un thread ou un processus donné. La façon habituelle d'inspecter la trace d'un programme est d'utiliser un débogueur externe tel que gdb.

Exemple de backtrace obtenu à partir d'un core dump généré après un segfault :

$ ulimit -c unlimited
./test_core
Erreur de segmentation (core dumped)
$ file core
core: ELF 32-bit LSB core file Intel 80386, version 1 (SYSV), SVR4-style, from
‘./test_core’
$ gdb ./test core
GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying…

Cet article est réservé aux abonnés. Il vous reste 92% à découvrir.
S'abonner à Connect
  • Accédez à tous les contenus de Connect en illimité
  • Découvrez des listes de lecture et des contenus Premium
  • Consultez les nouveaux articles en avant-première
Je m'abonne


Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous