2012-07-02 5 views
6

Powiedz, że załączyłem GDB do procesu i w jego układzie pamięci znajduje się plik i numer linii, którym chciałbym adres pamięci. Jak mogę uzyskać adres pamięci linii n w pliku x? To jest na Linux x86.gdb znajdź adres pamięci o numerze linii

+0

Mniej więcej duplikat [demontażu gdb według numeru linii] (http://stackoverflow.com/questions/11285932/gdb-disassemble-by-line-number) - odpowiedź na to pytanie jest doskonale trafną odpowiedzią na to pytanie także jeden. – duskwuff

Odpowiedz

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

dodatkowo z pytona może być w stanie korzystać z „ostatni” atrybut z Symbol-Tables-In-Python wymaga obecnie bardzo najnowszą wersję gdb z CVS, ale wyobrażam sobie będą mieć ogólną dostępność w 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

dzięki za pomoc. –

+0

infolinia! Tego właśnie potrzebowaliśmy w tym drugim pytaniu. –