运行:
(gdb) r
命令行带参:
(gdb) r "参数1" "参数2"
(gdb) set args "参数1" "参数2" //set args 10 20 40
查看/设置 运行环境:
(gdb) show args //查看命令行参数
(gdb) show paths //查看运行路径
(gdb) show env //查看环境变量
(gdb) set evn LINES=25 //设置环境变量
设置断点 break:
(gdb) b function
(gdb) b linenum
(gdb) b + offset
(gdb) b - offset
(gdb) b filename:function
(gdb) b filename:linenum
(gdb) b *address
(gdb) b xxx if <condition> //b 18 if i==50
设置观察点:
(gdb) watch expr //表达式expr变化则停止
(gdb) rwatch expr //表达式expr被读时停止
(gdb) awatch expr //表达式expr被读写时停止
查看断点/观察点 info:
(gdb) i
(gdb) i locals //显示当前函数所有局部变量的值
(gdb) i b 3 //查看第三个断点
(gdb) i watchpoints
(gdb) i watchpoints n
设置自动显示:
(gdb) display i
(gdb) display $pc //显示当前内存地址
删除自动显示:
(gdb) delete display dnum
(gdb) disable display dnum
(gdb) enable display dnum
停止维护点:
(gdb) delete
(gdb) clear
(gdb) disable
(gdb) enable
例子:
clear //清楚所有停止点
clear function //清除该函数内部的所有停止点
clear filename:function
clear linenum //清除某行上的停止点
delete n
delete n1-n2
disable n
enable n
单步调试next/step:
(gdb) n //逐行执行语句,不进入函数体内部
(gdb) s //逐行执行语句,进入函数内部
查看源程序list:
(gdb) list first,last
(gdb) list linenum
查看运行数据print:
print /<f> n //显示变量n的值
print /<f> ::n //显示全局变量n的值
print /<f> array //显示数据的值
print /<f> *array@length //显示动态分配数组的值
/<f>:为显示格式,其值为:x/d/u/o/t/a/c/f
查看变量类型:
(gdb) whatis var //获取变量的类型
(gdb) ptype var/structname //获取结构体定义
(gdb) where //函数的调用关系链
查看内存:
(gdb) x addr //查看内存
(info) line n //显示第n行的内存地址
改变程序执行流程:
(gdb) print i=10 //赋值
(gdb) print function //执行一次函数
(gdb) set var i=15
(gdb) jump linenum
(gdb) jump address
(gdb) call function //强制调用函数