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                                – 执行下一条语句

 

[温馨提示]:该文章由原博客园导入而来,如排版效果不佳,请移步:http://www.cnblogs.com/coderzh/archive/2008/08/19/1271347.html

微信扫一扫交流

作者:CoderZh
微信关注:hacker-thinking (一个程序员的思考)
本文出处:https://blog.coderzh.com/2008/08/19/1271347/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。