linux虚拟机中使用gdb调试工程项目

1、基础调试

不过多赘述gdb相关概念,如下为实际用法及示例

如图进入项目工程 

键入 gdb cli_main进入调试界面

 

 键入start程序开始运行

 

下面列出gdb基础指令说明 

 

 如下我键入n(next缩写)进行单步运行,并用p打印结构体变量addr的值

 

上述表格还有诸多命令,如遇相关场景使用即可,掌握以上便可初步调试较小功能模块程序

2、进阶调试

如果想在程序运行过程中不断查看某个变量的值,也可用dispaly 变量名,让其每次运行都自动打印该变量的值。如下图

 

想取消跟踪变量自动显示时,键入如下指令,其中1是这个变量的编号 

 

对于大工程,代码较长时需要设置断点,b(break) 行数即在该行设置断点,info breakpoints,查看你设置的所有断点信息。

 

有设置断点,必然也有删除,如下 delete breakpoints 3(还有使能和禁止某个断点,觉得不好故放弃用这种方式)

 

 设置完断点后,用c(continue)让程序从当前位置一直运行知道遇到断点或结束,如图程序停在设置的35行断点处,若每次需从头开始可用run。

 

接下来比较有用的条件断点的使用方法

 

如上图所示,其中break...if...即为设置条件断点,如下为示例用法

(gdb) b 9 if s!=0  #增加条件断点  仅当s不等于0才中断

 还有watch 和 x

 

watch的用法如下 

(gdb) watch sum>20  #设置观察点表达式 sum>20 当 sum>20时会中断程序运行

 x的用法如下

(gdb) x/40b arr # x

例如:int arr[10],x命令打印指定存储单元的内容,例如打印arr数组元素,使用x/40b arr ,这里 40b是打印格式,b表示每个字节一组,40表示打印40组,因为整数的sizeof是4,10个元素就是40组。

0x7fffffffe430: 1       0       0       0       2       0       0       0

0x7fffffffe438: 3       0       0       0       4       0       0       0

0x7fffffffe440: 5       0       0       0       0       0       0       0

0x7fffffffe448: 0       5       64      0       0       0       0       0

0x7fffffffe450: 64      -27     -1      -1      -1      127     0       0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值