yop,

Tout est dans le titre...
Y a-t-il un moyen de déboguer une lib dynamique avec GDB sous TiEmu ?

Merci bien.

(dans le pire des cas, je pourrai compiler en statique pour déboguer)
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
(c'est le genre de titre, quand tu le vois, tu connais déjà l'auteur du post cheeky)
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo
grin
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Bon, je n'arrive à déboguer qu'au niveau assembleur avec une lib statique. Dommage, les infos de débogage auraient pu être dans l'archive.

Seule solution trouvée : inclure les sources de l'archive au programme #triclasse#

ANf8
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
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.
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité
Wow quelle mémoire, merci beaucoup top

Bon, après essais :
- linking statique
- les infos de débogage semblent bien être dans l'archive (145ko vs 55 sans -g)
- j'ai bien un fichier "test.dbg" pour l'exécutable (compilé aussi avec -g)
- j'ai bien les noms de fonction C au bout des bcc/jsr, donc il y a bien des infos de débug
- par contre, je n'ai pas le source C, seulement l'assembleur...

Il faut que j'importe les sources et que je compile le programme comme un exécutable standard pour avoir le source dans la fenêtre de débogage.
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
J'ai quand-même dû revérifier quelques trucs, mais finalement je m'en rappelais quand-même plutôt bien. J'espère que ça fonctionne et qu'il n'y ait pas de bogues ou pièges que j'ai oubliés.
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité
Erf, merci encore plus alors. Par contre, j'ai édité mon post précédent cheeky

(et je précise : j'avais bien fait un clean de la lib statique avant de rebuilder avec -g)
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
C'est du standard GDB ceci dit XD
avatarProud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
yN a cassé ma signature :o
Folco (./6) :
- par contre, je n'ai pas le source C, seulement l'assembleur...

Il faut que j'importe les sources et que je compile le programme comme un exécutable standard pour avoir le source dans la fenêtre de débogage.
Ah, ton problème est que GDB ne trouve pas les sources. Pas étonnant parce que le fichier .dbg ne contient pas les sources, seulement les noms des fichiers source et les numéros de ligne. (J'aurais aimé tout mettre dedans, mais j'aurais dû réécrire tout le code de chargement de GDB, pas très pratique. Les fichiers .dbg de TIGCC sont en réalité des fichiers .o COFF, quasiment le même format que les fichiers .o en entrée (avec seulement quelques différences subtiles, notamment, l'absence des extensions de format de TIGCC, extensions qui ne sont plus nécessaires après le linkage). Pour y mettre des sources, il faudrait au moins en faire des fichiers .a.)

Tu peux essayer la commande GDB directory:
(gdb) help directory
Add directory DIR to beginning of search path for source files.
Forget cached info on source file locations and line positions.
DIR can also be $cwd for the current working directory, or $cdir for the
directory in which the source file was compiled into object code.
With no argument, reset the search path to $cdir:$cwd, the default.
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité
Ca maaaaaaaaaaaaaaaaaarche !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Merci Kevin !!!!!!!!!!!!!!!!!! #1036535672gif##36133##363161##bxqueerba1##chienricanant##content##communist##communist##communist##geek##fouzza##hoo##hoo#
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
(grin)