gdb调试程序
1. 查看寄存器
info registers
查看寄存器的情况。(除了浮点寄存器)
info all-registers
查看所有寄存器的情况。(包括浮点寄存器)
info registers ebp
查看所指定的寄存器的情况。
2. 查看汇编
disassemble func
3. 去除GCC的Buffer Overflow Protect
gcc -g -fno-stack-protector test.c -o test
4. 查看内存中的值
用gdb查看内存
格式: x /nfu <addr>
说明
x 是 examine 的缩写
n表示要显示的内存单元的个数
f表示显示方式, 可取如下值
x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
i 指令地址格式
c 按字符格式显示变量。
f 按浮点数格式显示变量。
u表示一个地址单元的长度
b表示单字节,
h表示双字节,
w表示四字节,
g表示八字节
5. gdb执行一般流程
$gcc -g test.c -o test -- 调试编译
$gdb -- 启动gdb
(gdb)file test -- 打开被调试文件test
(gdb)b 10 -- 在第10行设置断点
(gdb)b func -- 在函数func处设置断点
(gdb)clear -- 清除所有断点
(gdb)r -- 运行
(gdb)c -- 继续运行
(gdb)n -- 执行下一条语句
作者:CoderZh
公众号:hacker-thinking (一个程序员的思考)
独立博客:http://blog.coderzh.com
博客园博客将不再更新,请关注我的「微信公众号」或「独立博客」。
作为一个程序员,思考程序的每一行代码,思考生活的每一个细节,思考人生的每一种可能。
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。