在 gdb 中为地址创建自定义名称?

Create a custom name for an address in gdb?

我正在使用 gdb 对程序进行逆向工程,我对输入各种命令的所有地址感到困惑。有没有办法创建(和存储)自定义变量,这样我就可以说 x/i my_addr_name 而不是 x/i 0xdeadbeef

gdb 具有用户可定义的 convenience variables 来保存各种值。

(gdb) set $my_addr_name=$pc
(gdb) x/i $my_addr_name
=> 0x400c7d <main+390>: lea    -0xa0(%rbp),%rax
(gdb) ptype $my_addr_name
type = void (*)()

便利变量有一个类型,print 命令将使用它,但是 x 命令使用显式或默认格式并且不考虑表达式的类型.

could I have x/i 0xdeadbeff say my_addr_name+16

我不这么认为,除非编写一些额外的 C 或 python 代码。 gdb 的 C 源代码有一个 build_address_symbolic 函数,它通过符号 tables 查找最接近地址的符号。除了创建自定义交易品种 table,然后使用 add-symbol-file 命令加载它,或者编写 python 扩展来实现 x 命令的替代方案之外,我不会目前认为这样的定制是可能的。