如何在GDB中获取内存地址的符号名称?

Coo*_*coa 37 memory debugging gdb

例如,我知道0x46767f0属于NSString*,有什么方法可以找出NSString是什么来帮助我找到一些我想要的错误?

Bri*_*aro 52

我相信你在寻找:

info symbol <addresss>
Run Code Online (Sandbox Code Playgroud)

打印存储在地址地址中的符号名称.如果没有符号完全存储在addr中,GDB将打印最近的符号及其偏移量.

例:

(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
Run Code Online (Sandbox Code Playgroud)

你可以在这里阅读更多相关信息.


小智 13

gdb> list*0xAABBCCDD

这会告诉你文件名和行号.


Sim*_*ead 6

如果它是一个堆栈变量,我知道没有办法做到这一点。否则,尝试p/a <pointer symbol or address>它会打印符号名称(或偏移到最近的符号名称)。