2015-07-13 2 views
0

J'ai un exécutable ELF qui ressemble à ceci:Comment charger du texte (pas binaire) déboguer informaton à partir d'un fichier séparé avec GDB?

$ hexcat hello 
00000000: 7F 45 4C 46 01 01 01 00 00 00 00 00 00 00 00 00 .ELF............ 
00000010: 02 00 03 00 01 00 00 00 D7 80 04 08 34 00 00 00 ............4... 
00000020: 00 00 00 00 00 00 00 00 34 00 20 00 01 00 00 00 ........4. ..... 
00000030: 00 00 00 00 01 00 00 00 00 00 00 00 00 80 04 08 ................ 
00000040: 00 80 04 08 E2 80 04 08 E2 80 04 08 05 00 00 00 ................ 
00000050: 00 10 00 00 B8 04 00 00 00 8B 5C 24 04 8B 4C 24 ..........\$..L$ 
00000060: 0C 8B 54 24 08 CD 80 C3 55 8B EC 6A 01 FF 75 0C ..T$....U..j..u. 
00000070: FF 75 08 FF 75 FC BA 04 00 00 00 33 C0 E8 D2 FF .u..u......3.... 
00000080: FF FF 8D 65 FC 50 E8 01 00 00 00 0A 6A 01 6A 01 ...e.P......j.j. 
00000090: BA 04 00 00 00 33 C0 E8 B8 FF FF FF 8D 65 FC 50 .....3.......e.P 
000000a0: C9 C3 55 8B EC E8 0D 00 00 00 48 65 6C 6C 6F 2C ..U.......Hello, 
000000b0: 20 57 6F 72 6C 64 21 6A 0D 33 D2 33 C0 E8 A6 FF World!j.3.3.... 
000000c0: FF FF 8D 65 00 6A 00 8B 45 FC C9 C3 8B 5C 24 04 ...e.j..E....\$. 
000000d0: B8 01 00 00 00 CD 80 E8 C6 FF FF FF 50 E8 EA FF ............P... 
000000e0: FF FF            .. 

J'ai un fichier d'informations de la table des symboles qui ressemble à ceci:

$ cat hello.debug 
rec 8048054 8048068 code write 
rec 804808B 804808C string _tmp_2 
rec 8048068 80480A2 code printl 
rec 80480AA 80480B7 string _tmp_4 
rec 80480A2 80480CC code main 
rec 80480CC 80480D7 code exit 
rec 80480D7 80480E2 code _start 

Je voudrais utiliser ce dernier lors du débogage l'ancien ; comment puis-je transmettre cette information à GDB?

(Le programme actuel, je suis en train de debug est beaucoup plus grande, ce qui est juste un exemple.)

Répondre

1

Comment nourrir ces informations dans GDB?

Je ne crois pas que vous le pouvez.

Votre meilleur pari est probablement pour alimenter ces informations dans un outil qui permettra de créer un nouveau fichier ELF avec une table de symboles décrit par hello.debug (cela devrait être assez facile à faire en générant un fichier de montage avec .set appropriées directives (documentation) et compiler/lier le résultat), et fournir que nouveau fichier ELF à GDB avec add-symbol-file.