一、初级
(一)编译时的要求
1. 程序编译时必须加入 -g 参数进行编译。
2. 如果想查看宏的内容,需要在编译时加入 -gdwarf-2 -g3
(二)进入调式模式
1. gdb 程序名
2. gdb 程序名 *.core
3. gdb 程序名 进程号 或 gdb 程序名 -> attatch 进程号
(三)打印变量信息
1. p 变量名
2. p *数组变量量@长度
3. p *结构变量地址
4. p/x 以十六进制打印数据
5. x/16 内存地址 以十六进制打印内存
6. info locals 查看本地变量
7.
打印字符数组的全部内容 ·set print elements 0
·print var
(四)断点相关
1. b 函数名
2. b 行数
3. b 文件名:函数名
4. info b 查看所有断点
5. d 断点号 删除断点
6. 根据条件设置断点 break 313 if !strcmp(name->data, "http")//在 313 行设置断点(五)查看堆栈信息
1. bt
(六)查看当前代码
1. l
2. 设置代码的列的长度 set listsize 30
(七)结束函数
1. finish
(八)在GDB中给程序设置argv参数
1. set args 参数
(九) 运行
1. run
2. run 参数
(十)设置源码目录
1. dir $cdir:$cwd:源码路径
(十一)线程相关
1. i threads //查看用到的线程
2. thread 线程号 break 行号 //在指定线程处设置断点
3. thread 线程号 //切换到指定线程
(十二)查看寄存器
1. info registers 显示所有寄存器内容
2. info registers 寄存器 显示某个寄存器的内容
(十三)结束循环
1. u
(十四)当变量发生变化时打印出变量值
1. display 变量值
2. d display 号 //删除观查的变量
(十五)反汇编
1. disasse
二、高级
1. 通过对象元素,查看对象内容
struct AA 为结构体
p *(struct AA *) ((unsigned int )&对象元素 - (unsigned int )(&((struct AA *)0)->结构元素))
阅读(1198) | 评论(0) | 转发(0) |