GDB¶
References¶
Commands¶
shell暂时进入 shelln/s单条语句,步过/步入ni/ns单条指令,步过/步入
Breakpoint¶
b main # 对函数下断点
b *0xbeef # 对地址下断点
b *main + 0x10 # 对函数偏移下断点
watch *0xbeef # 硬件断点
info breakpoints # 查看断点
delete <num> # 据编号删除断点
Print¶
x /FMT ADDRESS 打印内存内容,FMT: A repeat count followed by a
format letter and a size letter.
Fromat:
/x十六进制,d十进制,u十六进制无符号,i指令,o八进制,t二进制,a地址 (?),c字符,f浮点数,sC Style 字符串Size:
bbyte,hhalfword,wword,ggiant, 8 bytes
对于某些 format letter,size letter 不一定有用。
p 打印变量和表达式,支持部分 format letter
print $rdi # 查看 rdi 寄存器值
print $1 # 查看第一次 print 的输出
print var # 打印 var 的值
print *var # 打印 var 内存单元中的值
# ^ 还搞不明白 * 的具体含义……
# 比如 print main 和 print *main 的输出相同
print *array@len # 打印长度为 len 的数组
print {void *}argv@argc # 查看所有启动参数地址
$NUM代表历史 print 输出,$xxx代表当前寄存器的值, 若xxx非寄存器名,fallback 到用户自定义变量{TYPE}ADREXP对ADREXP用类型TYPE解析,@NUM将地址视为长度为NUM的数组起点