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

GDB检查命令,目标地址处有多个单元,gdb,Gdb,我正在自己学习《黑客攻击剥削的艺术》第二版,已经遇到了第一组障碍 在GDB中,我可以理解以下代码: x/x $rip 将检查寄存器$rip并以十六进制输出 但该代码的作用是: x/2x $rip 这本书说,它正在检查目标地址的多个单元。但这是否意味着它在接下来的2次变化中显示了$rip的价值。或者它意味着什么 哥伦布会说,还有一个问题。调用examine命令后,我得到: 0x100000f00 <main+8> 0x00fc45c7 main+8是什么意思 x/x$rip将检查

我正在自己学习《黑客攻击剥削的艺术》第二版,已经遇到了第一组障碍

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

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

但该代码的作用是:

x/2x $rip
这本书说,它正在检查目标地址的多个单元。但这是否意味着它在接下来的2次变化中显示了$rip的价值。或者它意味着什么

哥伦布会说,还有一个问题。调用examine命令后,我得到:

0x100000f00 <main+8> 0x00fc45c7
main+8是什么意思

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

这是错误的:它将检查$rip指向的内存。如果要检查$rip本身,可以使用print/x$rip

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

它检查了$rip指向的两个单词的记忆

main+8是什么意思

这意味着您正在查看包含指令的内存,其偏移量为从main开始的8

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

这是错误的:它将检查$rip指向的内存。如果要检查$rip本身,可以使用print/x$rip

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

它检查了$rip指向的两个单词的记忆

main+8是什么意思


这意味着您正在查看包含指令的内存,位于main开头偏移量8处

谢谢。我对$rip的唯一理解是它指向处理器正在读取的当前指令。当您说它检查$rip指向的两个单词的内存时,这是否意味着它正在查看当前指令,然后是后面的指令?如果我放x/100x$rip怎么办?这是在看下100条指令吗?@jimbo123这是否意味着它在看当前指令,然后是后面的指令如果每条指令只包含一个字,这是正确的,这在许多RISC处理器上都是正确的,但在x86上却不是。否:您看到的是2个32位字,可以包含多达8条指令。最短的x86指令只有1字节,或者最短的x86指令只有15字节。非常感谢!这也许是一个非常基本的问题,但它帮助我理解书中的其他部分谢谢。我对$rip的唯一理解是它指向处理器正在读取的当前指令。当您说它检查$rip指向的两个单词的内存时,这是否意味着它正在查看当前指令,然后是后面的指令?如果我放x/100x$rip怎么办?这是在看下100条指令吗?@jimbo123这是否意味着它在看当前指令,然后是后面的指令如果每条指令只包含一个字,这是正确的,这在许多RISC处理器上都是正确的,但在x86上却不是。否:您看到的是2个32位字,可以包含多达8条指令。最短的x86指令只有1字节,或者最短的x86指令只有15字节。非常感谢!这可能是一个非常基本的问题,但它有助于我理解本书的其他部分