如何查看寄存器保存的值?我有以下 assembly 线:
mov 0x8(%rax), %rax
cpm %ebx, (%rax)
使用命令:
(gdb) p/x $ebx
(gdb) p/x $rbx
$3 = 0xb
我得到存储在这个寄存器中的值。但是,当我尝试查看存储在内存位置 (%rax) 中的内容时,我遇到了以下问题:
(gdb) display *(int *)$rax
Disabling display 10 to avoid infinite recursion.
10: *(int *)$rax = Cannot access memory at address 0x17
我无法理解为什么会发生这种情况以及如何找出 (%rax) 中的内容。
最佳答案
要查看寄存器的值,只需使用
print $rax
info register $rax
info register
在您的情况下,rax
似乎包含数字 0x17
并且调试器无法访问此位置。请确保 rax
包含指向整数的有效地址。
如果您想快速查看,您应该使用print
而不是display
。不要滥用 display
命令。如果你需要一种表达式的看门狗,你可以使用它。
在这里你可以找到一个快速引用
http://www.yolinux.com/TUTORIALS/GDB-Commands.html
希望对您有所帮助。
关于assembly - 使用 gdb 检查寄存器的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13282176/