gdb的使用:
l查看源码和行号
p a或'main'::a(main函数中a)打印变量a的值
要打印单个寄存器的值,可以使用“i registers eax”或者“p $eax”
设置断点b 5(根据行数)/main(根据函数)/*0x40059b(地址)
info break 显示所有断点
清除某个断点 delete 4 清除所有断点 delete 清除当前行断点 clear
运行 r 继续单步调试 s会进入函数内部 n不会进入函数内部 继续执行到下一个断点 c
退出gdb q
set disassembly-flavor intel/att(att会有%符号,顺序为 源操作数,目的操作数)
disass main/foo 反汇编main函数
栈
查看当前程序栈的信息: info frame 或f
查看当前程序栈的参数: info args
查看当前程序栈的局部变量: info locals
x/24x $sp-0x4c 查看栈-0x4c(sp)的后面24个内容,以16进制形式
查看-0x40(rbp)的实际内容p $rbp-0x40
查看地址实际内容x /w $rbp-0x40