gdb调试知识
之前一直不怎么用gdb,现在要用做一下记录
用gdb启动程序
gdb ./demo
intel风格反汇编main函数,一共两行第一行设置汇编风格,第二行才是反汇编main函数
set disassembly-flavor intel
disass main
设置断点到main 设置断点到main后的某个偏移位置
b *main
b *main+35
查看断点
info break
步进
ni命令相当于VS里面的F10
si命令相当于VS里面的F11
c相当于VS里面的F5
display 显示某寄存器的值 格式:display /x $寄存器名字
display /x $rsp
x查看内存单元 格式:x /nfu 内存地址 x means examine
说明:
n表示要显示的内存单元的个数
f表示显示方式, 可取如下值:
x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a按十六进制格式显示变量。
i 指令地址格式。
c 按字符格式显示变量。
s 按字符串格式显示变量。
f 按浮点数格式显示变量。
u表示一个地址单元的长度,其中:
b表示单字节,
h表示双字节,
w表示四字节,
g表示八字节
例如打印堆栈
x/64x $rsp