汇编语言调试与指令语法全解析
1. GDB 调试基础操作
1.1 查看寄存器值
在调试过程中,我们常常需要查看寄存器的值。要查看寄存器的值,只需在 GDB 中输入以下命令:
info registers
这个命令会提供所有寄存器的完整信息。当前,大部分寄存器初始化为零,因为第一条指令尚未执行,所以 %rax
也为零。寄存器的值会以两列形式呈现,左列是原始值,右列是调试器对该值的解释。左列的值是“官方”值,但右列可能会提供额外的重要上下文信息,比如将值转换为相对于某个地址的偏移量,或者将十六进制数转换为十进制数等。
1.2 执行下一条指令
若要执行下一条指令,可在 GDB 中输入:
stepi
此命令会使程序执行下一条机器指令。再次执行 disassemble
命令,箭头会指向代码的下一行。若执行 info registers
命令,会发现 %rax
现在被设置为 0x3c
。多次执行 stepi
命令,程序会逐步执行后续指令,当执行系统调用时,程序会退出,调试器会报告如下信息:
[Inferior 1 (process 152) exited