经常使用的GDB调试命令汇总

在业务代码开发的过程中通常使用GDB进行调试,调试FT也会使用GDB进行问题定位。下面梳理下常用的GDB命令,方便后续的查阅。当然在GDB中也可以直接help all查看所有的命令。

1,gdb programe_A 进入gdb调试模式,programe_A是某可执行程序。

2,b(break缩写) function_A 设置函数function_A为断点,当程序运行到该函数的时候停止,第一个设置的函数往往标记为break 1;b function_B 设置函数function_B为断点,第二个设置的函数往往标记为break 2。

3,d(delete缩写) 1,表示删除断点1,则可执行程序再次运行的时候,就不会在该断点所指函数处暂停。查看断点的信息,可以使用8中的info b或者 i b来显示所有的断点。

4,r(run缩写) 表示执行该可执行程序,如果该可执行程序有入参之类的,则是r args 形式。

5, n(next缩写) 表示当程序运行到断点处的时候,程序一行行的执行下去,如果遇到函数,并不会跳入函数内部执行。

6,s(step缩写)表示跳入当前执行语句的内部进行执行,如果当前语句是一个函数吗,或者一个宏,则会进入相应的函数体等。如果想切换成单步执行,输入n ,回车即可,则会像第5步那样单步执行。

7,p(print缩写) var_A表示打印变量var_A,当程序执行到某处的时候,使用该命令可以打印当前变量值,这也是在调试程序或者FT时候经常需要查看的。

8,i(info缩写)表示查看当前函数体内相关信息。只输入i的时候会有提示查看哪些信息。例如i args会输出该函数的入参信息,地址等,i source表示输出还函数所在文件相关信息,i stack输出当前函数的调用栈,跟bt功能一样,总之该命令功能强大。

9,set var_A=5 表示设置变量var_A值为5。例如有的时候想验证该变量在某些值情况下,会走哪些分支,还是很有用的。

10,bt(backtrace缩写)表示查看函数调用栈关系。

11,f(finish缩写)表示结束当前的运行,停留在运行到的位置,等待下一个命令动作。

12,c(continue缩写)表示程序继续运行,至下一个断点处停止。

13,q(quit缩写)表示退出gdb调试,一般在Linux环境中 Ctrl+Z表示前置终止当前程序也是可以的。

14,enable 1表示启用1号断点,disable 2表示禁用2号断点。

15,watch var_a表示设置var_a为观察点,当var_a发生变化,例如被赋值的时候。打印改变量的详细信息,包括新老值。info watch表示显示所有观察点信息。

16,display var_a表示追踪变量var_a的信息,即每执行一条语句,就打印追踪变量的值。

17,x(examine缩写),表示查看内存。例如x/4db var_a 表示从var_a变量开始位置读取4个单位,以单字节(b)为单位,十进制显示(d)。当然关于x命令的详解可以通过help x查看。

当然,gdb的用法非常的多,以上只是一些常用的命令,足够日常使用。除了调试之外,在业务代码中加入统计,加入打印是常用的调试手段,因为外场不能够gdb进行调试。在ST的时候统计和打印较为重要。像openssl的错误统计输出信息的erro模块的设计其实也是值得借鉴的,在优快云 openssl源码之error模块分析这篇文章中我做了粗浅的分析。

本文为优快云村中少年原创文章,转载记得加上小尾巴偶,博主链接这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

村中少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值