4Fermer6
Kevin KoflerLe 26/07/2017 à 19:35
Hmmm, ça fait très longtemps, tout ça, mais je vais essayer de me rappeler:

Avec une lib statique (cf. ./4), normalement, il suffit de compiler la lib statique avec les informations de débogage (-g), en prenant bien soin de recompiler tous les fichiers .o de l'archive (pas juste faire un make), puis de linker le programme avec cette version. Sachant aussi que cela produira un fichier .dbg pour le programme même si les fichiers du programme principal n'ont pas d'informations de débogage (parce que la création du .dbg est activée par le linker dès qu'il voit une section d'informations de débogage), donc caveat emptor.

Avec une lib dynamique (la question de départ, cf. ./1), c'est un peu plus compliqué: Il faut compiler le programme et la lib avec les informations de débogage, ça donne deux fichiers .dbg, un pour le programme et un pour la lib. Seul le premier est chargé automatiquement par TiEmu+GDB ou Emu-TIGCC. Pour le deuxième, tu dois:
  1. repérer l'adresse à laquelle se trouve ta lib dynamique en mémoire (la table Heap du débogueur bas niveau peut éventuellement t'aider), la bonne adresse étant le début du handle, c'est-à-dire un pointeur sur les 2 octets de taille du fichier,
  2. ouvrir la console GDB (View / Console depuis le Source Window Insight) et
  3. charger manuellement le fichier de symboles avec add-symbol-file "fichier.dbg" adresse.