2012-07-02 57 views
6

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

+0

或多或少根据行号[gdb反汇编](http://stackoverflow.com/questions/11285932/gdb-disassemble-by-line-number)的副本 - 对这个问题的答案是一个非常好的答案一个也是如此。 – duskwuff

回答

13
(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 
全面上市
+0

感谢您的帮助。 –

+0

信息行!这就是我们在其他问题上需要的。 –