C - GDB 查找行号的内存地址



假设我已经将gdb附加到一个进程,并且在其内存布局中有一个文件和行号,我想要它的内存地址。如何获取文件 x 中第 n 行的内存地址?这是在Linux x86上。

(gdb) info line test.c:56
Line 56 of "test.c" starts at address 0x4005ae <main+37>
   and ends at 0x4005ba <main+49>.

此外,使用 python,您可以使用来自Symbol-Tables-in-Python 这目前需要来自 CVS 的最新版本的 GDB,但我想将在 7.5 中正式发布

(gdb) py x = gdb.find_pc_line(gdb.decode_line("test.c:56")[1][0].pc); gdb.execute("p/x " + str(x.pc)); gdb.execute("p/x " + str(x.last))
$15 = 0x4005ae
$16 = 0x4005b9

最新更新