2010-05-14 1 views
6

Vous pouvez pointer un seul fichier symbole pour gdb avec la commande du:Comment charger tous les fichiers de symboles récursivement à partir d'un chemin donné, y compris les sous-répertoires?

symbol-file /usr/lib/debug/symbolfile.so 

Mais comment dire gdb pour charger tous les fichiers de symboles-de chemin donné, y compris les sous-répertoires?

+1

Sur quelle plateforme êtes-vous? J'ai une bonne réponse pour Linux/ELF, mais je suis trop paresseux pour le saisir si ce n'est pas votre plateforme. –

+0

Oui, j'ai une plate-forme Linux Debian. – user44556

+0

Homme, toutes ces réponses sucent ... Idem pour [Comment charger plusieurs fichiers de symboles dans gdb?] (Http://stackoverflow.com/q/20380204) – jww

Répondre

2

Sur un système Linux, vous ne devriez jamais avoir à utiliser la commande GDB symbol-file en premier lieu.

L'astuce consiste à préparer vos binaires de telle sorte que GDB trouve automatiquement le fichier de symboles. C'est étonnamment facile à faire. Les instructions détaillées sont here.

+0

Eh bien, supposons que je ne compile rien moi-même. Par exemple après apt-get install libc-dbg. Dois-je déplacer le paquet de débogage installé en le copiant quelque part avant le débogage? – user44556

+0

L'exécution de "apt-get install libc-dbg" devrait vous permettre de déboguer libc dans GDB * sans * aucune commande de fichier-symbole supplémentaire. Si ce n'est pas le cas, alors vous avez soit un .gdbinit cassé (très probablement), un GDB cassé, ou un libc-dbg cassé. Je vous suggère de modifier votre question et de fournir autant de détails que possible, y compris les paquets installés et ce qu'ils contiennent, ainsi que les résultats de votre session GDB réelle avec "gdb -nx -ex 'set verbose sur' ./a.out ". –

0

Utilisez la commande suivante: ensemble chemin recherche-chemin solib

0

La solution est de add-symbol-file. Par exemple, si le fichier symbole est appelé lib.out:

add-symbol-file lib.out 0 

Ceci est particulièrement utile sur le système embarqué où les développeurs d'applications utilisent une bibliothèque stockée dans la mémoire morte. Le débogueur a besoin du fichier de symboles pour reconstruire la pile si l'exécution s'arrête au milieu d'un appel de fonction de bibliothèque. Cela fonctionne même si la bibliothèque a été générée sur un système distinct auquel les développeurs n'ont pas accès.

Questions connexes