How to get the symbol name for a memory address in GDB?
For instance, I know that 0x46767f0 belongs to an NSString*, is there any way I can find out what NSString it is to help me find some bugs I'm after?
Solution 1:
I believe you're looking for:
info symbol <addresss>
Print the name of a symbol which is stored at the address addr. If no symbol is stored exactly at addr, GDB prints the nearest symbol and an offset from it.
Example:
(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
You can read more about it here.
Solution 2:
gdb> list *0xAABBCCDD
That tells you the filename and line number.
Solution 3:
If it is a stack variable, there is no way that I am aware to do it. Otherwise, try p/a <pointer symbol or address>
and it will print the symbol name (or offset to the nearest symbol name).