2012-08-17 12 views

Odpowiedz

13

Polecenie w lldb to "wyszukiwanie obrazu". Myślę, że przykład "info func" < -> "wyszukiwanie obrazów" został ostatnio dodany do strony polecenia lldb/gdb - http://lldb.llvm.org/lldb-gdb.html

np.

(lldb) im loo -n puts 
1 match found in /usr/lib/system/libsystem_c.dylib: 
     Address: libsystem_c.dylib[0x0000000000011d9a] (libsystem_c.dylib.__TEXT.__text + 69850) 
     Summary: libsystem_c.dylib`puts 
(lldb) 

mimo to pokazuje tylko ci offsetu w libsystem_c.dylib tutaj (0x11d9a) - aby zobaczyć rzeczywisty adres ładowania trzeba by użyć opcji „-v” do wyszukiwania obrazu, który pokaże zakres adresów, które umieszcza okładki. Czy można to zrobić bardziej bezpośrednio z tylnym notacji kleszcza w lldb,

(lldb) reg read pc 
    rip = 0x0000000100000f2b a.out`main + 11 at a.c:3 
(lldb) reg write pc `(void(*)())puts` 
(lldb) reg read pc 
    rip = 0x00007fff99ce1d9a libsystem_c.dylib`puts 

OK musiałem rzucić puts(), ponieważ lldb potrzebne prototyp funkcji tutaj - nie bardzo wygodne, ale jeśli jest to jeden z własnych funkcji to nie jest potrzebne:

(lldb) reg write pc `main` 
(lldb) reg read pc 
    rip = 0x0000000100000f20 a.out`main at a.c:2 
Powiązane problemy