Comment charger tous les fichiers de symboles de manière récursive à partir d’un chemin donné, y compris les sous-répertoires?

Vous pouvez pointer un seul fichier de symboles vers gdb avec la commande suivante:

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

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

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

L’astuce consiste à préparer vos fichiers binarys de manière à ce que GDB trouve automatiquement le fichier de symboles. C’est étonnamment facile à faire. Les instructions détaillées sont ici .

Utilisez la commande suivante: set solib-search-path path

La solution consiste à add-symbol-file . Par exemple, si le fichier de symboles s’appelle lib.out :

 add-symbol-file lib.out 0 

Ceci est particulièrement utile sur les systèmes embarqués où les développeurs d’applications utilisent une bibliothèque stockée dans la ROM. Le débogueur a besoin du fichier de symboles pour reconstruire la stack 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 access.