要使用gdb去调式汇编程序,在使用as编译时要加上-gstabs选项,在使用gcc编译时加上-g选项,
gdb有个bug,就是在_start符号处设置了断点,使用run命令去运行程序时也不会在这个断点处停下来。
gdb命令
1程序运行
(1)run
运行程序,可以在后面加上命令行参数,可以使用命令show args打印出有哪些命令行参数
(2)continue
继续执行后面的程序
(3)next
单步执行,不进入函数内部
(4)step
单步执行,遇到函数时进入函数内部执行
2断点
break设置断点,后面可以跟行号或者函数名,我们可以使用info breakpoints打印出有哪些断点以及它的断点号
delete [bpnum1] [bpnum2]...删除断点,后面跟的是断点号
clear也可以删除断点,只是后面跟的是行号或者函数名
disabel [bpnum1] [bpnum2]... disable断点
enable [bpnum1] [bpnum2]... enable断点
3值查看
info registers显示所有寄存器值
print显示指定寄存器值或变量值
print /d以十进制显示数值
print /t以二进制显示数值
print /x以十六进制显示数值
默认是十进制显示数值
例如print $eax
x显示指定内存单元值
x命令格式
x/nyz
n表示显示多长
y取值为c,d和x,分别表示字符,十进制和十六进制
z表示显示的大小,b,h和w分别表示字节,半字和字
例如x/4cb&output
0x80490ac<output>: 84 'T' 104 'h' 101 'e' 32 ' '
4其他命令
quit退出gdb调试
help查看命令帮助