Étape GDB dans le code de l’éditeur de liens dynamics (ld.so)

Je voulais entrer dans le code de ld.so chaque fois qu’il sera utilisé dans mon code c normal. J’essaie de faire circuler du code dans GDB en mode TUI , où vous pouvez voir le code source et l’assembly à mesure que vous passez au-dessus de ce code.

Pour cela, j’ai également installé le binutils-source libc-dbg binutils-source partir du gestionnaire de paquets ubuntu. GDB peut trouver les symboles de débogage pour le ld.so lui-même et je peux passer au niveau d’instruction qui utilise si mais je ne peux pas passer au niveau source car GDB n’est pas en mesure de trouver la source pour ld.so et indique NO Source Available .

Comment puis-je faire en sorte que GDB trouve le source pour ld.so afin que je puisse également voir quelle ligne de la source ld.so est en cours d’exécution.

J’utilise Ubuntu 12.10 64bit avec GCC 4.8.2

Si le code source de libc est disponible, vous pouvez append des sources au chemin source de gdb avec la commande dir : Source_Path

Edit: Pour déboguer les fichiers liés à libc (dans une dissortingbution Ubuntu), vous devez:

  1. Obtenez les informations de débogage de libc en installant le paquet libc6-dbg.
  2. Obtenez le code source de libc en activant les référentiels sources (en exécutant software-sources et en cochant “activer les référentiels de code source”) et en exécutant apt-get source libc6
  3. Ajoutez les informations de débogage de libc dans LD_LIBRARY_PATH: export LD_LIBRARY_PATH=/usr/lib/debug ou LD_LIBRARY_PATH=/usr/lib/debug gdb
  4. Ajoutez le chemin complet du fichier c au chemin source de gdb, c’est: dir directory_path_libc_source/stdio-common

Téléchargez le source et le chemin Glibc de la même manière avec gdb avant le débogage. Vérifiez ce blog Ubuntu