gdb的调试方法

1、编译代码的时候加上 -g 选项允许目标程序可以调试运行
-o 选项允许目标程序名称改为xxx.out,默认是 a.out
gcc xxx.c -g -o xxx.out

2、以gdb方式启动调试代码
gdb xxx.out 或 gdb a.out

3、如果出现 (gdb) 表示调试器启动成功;
否则出现 no debugging symbols found

4、有如下调试命令
(gdb) l ===>列出当前要调试的目标程序的代码
(gdb) ENTER ===>默认执行上次命令
(gdb) b 20 ===>在代码的第20行位置加入一个断点
b main ==>在代码的main函数位置加入一个断点
b xxx.c:30 ==>在其他代码文件的指定位置加入一个断点
info b ===>可以查看所有断点的设置情况

(gdb) r   ===>开始执行代码,默认会执行到第一个断点位置	
	  r  xx  yy   ===>带参数执行目标程序

(gdb)                      s   ====>单步跟踪指令,见到函数跟踪到函数内部
	  n   ====>单步跟踪指令,见到函数不进入函数内部 
	  c   ====>直接运行到下一个断点位置
	  f   ====>直接执行到结束

(gdb) p xx  ==>查看某个变量的值  


(gdb) q   ===>结束本次调试过程

调试段错误的快捷方法:
0、先将目标程序用 -g 选项编译加入调试信息
1、在段错误发生问题的终端环境下 ulimit -c unlimited
2、执行有问题的代码,并到段错误出现,最终会在当前目录生成 core 文件
3、使用gdb 启动目标程序并加载core文件, gdb a.out core
4、可以直接找到目标段错误的位置,一般有如下两种可能
4.1 库函数调用失败异常 #0 位置后面标明异常的库函数
bt 指令可以查看当前的堆栈调用信息
4.2 非库函数,则直接定位到异常位置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值