#include
long test()
{
long a = 1;
a += 2;
return a;
}
int main()
{
int ret = test();
printf("test return %d\n", ret);
return 0;
}
si 指令执行汇编级的单步调试info registers 读取寄存器值push rbp 会将 rbp 值存放在 rsp 下方, 然后让 rsp 寄存器的值减8x 命令: 查看内存~/.gdbinit
set disassembly-flavor intel
set breakpoint pending on
set history save # 退出 gdb 后,直接在当前目录下的 .gdb_history 中看到命令记录
set verbose off
set print pretty on
set print array off
set print array-indexes off
set disable-randomization on
set target-async 1
set pagination off
set non-stop on
通过 gdb 单步调试汇编指令,可以验证 rsp 的取值变化:
g++ test3.cpp
gdb ./a.out
b main
r
disassemble
si
si
disassemble
si
disassemble
info registers rsp rbp
si
disassemble
info registers rsp rbp
x /1xg $rsp
q
