GDB检查命令,目标地址的多个单元

jim*_*123 1 gdb

我正在研究自己的"黑客剥削艺术第二版"这本书,并且已经达到了第一套障碍.

在GDB中,我可以理解这段代码:

x/x $rip
Run Code Online (Sandbox Code Playgroud)

将以十六进制检查寄存器$ rip和输出.

但是这段代码做了什么:

x/2x $rip
Run Code Online (Sandbox Code Playgroud)

该书说,它正在检查目标地址的多个单位.但这是否意味着它会在接下来的2次变化中显示$ rip的值.或者它意味着什么呢?

Columbo会说的另一个问题.在我调用检查命令后,我得到:

0x100000f00 <main+8> 0x00fc45c7
Run Code Online (Sandbox Code Playgroud)

main + 8是什么意思?

Emp*_*ian 5

x/x $rip 将以十六进制检查寄存器$ rip和输出.

这是不正确的:它将检查指向的内存$rip.如果你想检查$rip自己,你会使用print/x $rip.

但是这段代码做了什么: x/2x $rip

它检查了两个记忆词,指向$rip.

什么main+8意思

这意味着你正在查看包含指令的内存,偏离8开头main()