使用gdb调试的前提条件
1.必须在连接之前,即编译的阶段加入-g指令
2.如果想要在运行出错后,排查出错原因,需要启用core功能
->Linux命令行
->ulimit -a 找到core Limit相关,
->使用ulimit -c unlimited可直接设置存储容量无限制
进入gdb调试模式的方法
1.gdb [filename]
2.gdb [filename] core
gdb常用的调试参数
//设定相关
- set args [args1] [args2] …给文件设定传入的参数
- show args 查看设定好的参数
//运行调试相关
- run / r 开始运行程序至断点
- step / s 单步调试,进入函数调用
- next /n 单步调试,不进入函数调用
- continue 进行执行到下一个断点
- finish 跳出当前函数
- start / st 开始执行程序,在main函数的第一条语句前停下
- kill [filename] 终止正在调试的程序
//断点设置相关
- break / b [lineNo] / [functionName] 在指定行号或函数名处加上断点
- info b 查看已设定的断点信息
- ignore [breakNo] [cnt] 忽略断点cnt次
- delete [breakNo] 删除指定编号的断点
- disable [breakNo] 停用指定断点
- enable [breakNo] 启用指定断点
- tbreak
- watch [var]为表达式(变量)expr设置一个观察点。一旦表达式值有变化时,马上停住程序
//查看监视相关
- list / l [lineNo] 显示10行代码
- display / disp [var] 一直监控变量的值
- print / p [var] 显示指定变量的值
- backtrace / bt 查看堆栈调用情况
- frame 查看栈帧
- x/[num]xb address 查看指定地址的内存使用情况,x是指令,/后面接显示的数量和显示的格式,x代表16进制,b代表byte,前面的num表示显示多少个,address表示起始地址