我有一个看起来像这样的ELF可执行文件:
$ 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 ..
我有一个符号表信息文件,如下所示:
$ 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
我想在调试前者时使用后者;如何将这些信息提供给GDB?
(我试图调试的实际程序要大得多;这只是一个例子。)
答案 0 :(得分:1)
如何将这些信息提供给GDB?
我不相信你可以。
您最好的选择可能是将该信息提供给一个工具,该工具将创建一个带有hello.debug
描述的符号表的新ELF文件(通过生成具有适当{{1}的汇编文件,这应该相当容易。 1}}指令(documentation)和编译/链接结果),并使用.set
将 新ELF文件提供给GDB。