Na przykład, wiem, że 0x46767f0 należy do NSString *, czy jest jakiś sposób, aby dowiedzieć się, czym jest NSString, aby pomóc mi znaleźć błędy, których szukam?GDB: Uzyskiwanie nazwy symbolu z adresu pamięci
Odpowiedz
wierzę szukasz:
info symbol <addresss>
drukowana nazwa symbolu, który jest przechowywany na addr adresowej. Jeśli żaden symbol nie jest zapisany dokładnie w addr, GDB wypisze najbliższy symbol i odsunięcie od niego.
Przykład:
(gdb) info symbol 0x400225
_start + 5 in section .text of /tmp/a.out
(gdb) info symbol 0x2aaaac2811cf
__read_nocancel + 6 in section .text of /usr/lib64/libc.so.6
Możesz przeczytać więcej na ten temat here.
Jeśli jest to zmienna stosu, nie ma sposobu, który jestem świadomy, aby to zrobić. W przeciwnym razie spróbuj p/a <pointer symbol or address>
i wypisze nazwę symbolu (lub przesunięcie do najbliższej nazwy symbolu).
PO 0x46767f0
wyśle wiadomość -description
do obiektu. To wydrukuje zawartość twojego NSString, ale proponuję użyć odpowiedzi Briana, by sprawdzić zawartość twojego adresu, zanim wyślesz losowe wiadomości na przypadkowe adresy.
gdb> lista * 0xAABBCCDD
który mówi, numer pliku i linii.
Tylko jeśli masz tyle szczęścia, że masz symbole debugowania ... – Equidamoid
Link "tutaj" nie działa. Czy ktoś może to zaktualizować? –