如何查看寄存器的值?我有以下装配线:
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)的内容。
答案 0 :(得分:2)
要查看寄存器的值,只需使用
print $rax
info register $rax
info register
在您的情况下,似乎rax
包含数字0x17
,调试器无法访问此位置。请确保rax
包含指向整数的有效地址。
如果您想快速查看,则应使用print
代替display
。不要滥用display
命令。如果你需要一种表达式的看门狗,你可以使用它。
在这里您可以找到快速参考
希望它有所帮助。答案 1 :(得分:1)
不确定您使用的是什么类型的CPU(x86?),但内存访问是否必须对齐?这意味着您可以访问0x08,0x10,0x18,0x20等等(或者可能是32位字,即0x00,0x20,0x40等等)。根据您的架构,这可能是一个错误的答案。另外,注册表标签是什么? Windows注册表似乎不相关。