前言
GDB 作为程序调试利器,是一个受通用公共许可证(GPL)保护的自由软件,全称是 GNU Debugger,又常常被称为 GNU symbolic debugger 或者 GNU project debugger,能够帮助开发者调试程序,分析应用程序运行过程。目前支持调试 C、 C++、 D、 Go、 Objective-C、 Fortran、 Java、 OpenCL C、 Pascal、 assembly、 Modula-2、 Ada 等多种编程语言。
GDB能做什么
GDB 是调试程序的强大武器,能够帮助开发者找出程序出现BUG的原因,但是不要指望它能自己查问题,它仅仅是一个工具,可以帮助我们查找问题原因,常常被用来做以下事情:
- 分析程序崩溃的原因
- 查找程序表现出错误行为的原因
- 找到一些从源码上难以发现的逻辑错误
GDB调试步骤
- 使用
g++附加-g参数编译程序,g++ -g mainpro.cpp -o mainpro - 使用
gdb程序来启动调试我们自己构建的程序,gdb mainpro - 使用
run、break、print等命令调试程序 - 使用
quit命令退出程序
GDB调试示例
- 编写示例程序代码,保存到文件
mainpro.cpp中
1 |
|
- 使用
g++附加-g参数编译程序
1 | albert@home-pc:~$ g++ -g mainpro.cpp -o mainpro |
- 使用
gdb命令来启动调试
1 | albert@home-pc:~$ gdb mainpro |
- 使用
break 8在第8行打断点,使用run命令启动程序,使用print c打印程序变量
1 | (gdb) break 8 |
- 使用
quit命令退出程序
1 | (gdb) quit |
GDB启动参数与命令列表(持续更新)
GDB 众多的启动参数和命令提供了强大的调试功能,每一条都可以展开得到很多知识,这些知识的学习是一个持续的过程,短时间无法消化和吸收,所以准备总结一个系列,从最简单的命令开始总结,持续更新学习下去,文章链接不定期更新。
| GDB命令 | 备注 | 参考文章 |
|---|---|---|
gdb、gdb -q |
GDB启动、查看说明 | [GDB调试指北-启动GDB与查看说明] |
gdb pro、gdb pro 123 |
启动调试程序、调试正在运行的程序 | [GDB调试指北-使用GDB启动调试] |
directory new-path |
查看调试源码 | GDB调试指北-查找丢失源码文件 |
set substitute from-path to-path |
查看调试源码 | GDB调试指北-查找丢失源码文件 |
总结
GDB调试技巧更多的是工具本身的功能,所谓“重剑无锋,大巧不工”,熟练利用这个工具才能发挥最大的威力- 知识的学习时一个持续的过程,只有不断的学习和总结才能不断进步,而不要被那些花里胡哨的外表所迷惑
- 有些知识学着学着就通了,前几天看到
printf这个函数,很疑惑为什么末尾要加个f,猜想它是格式化format的意思 - 经过查证果然如此,此时距离第一次在 C 语言中学习
printf函数已经过去了10年
==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==
大漠孤烟直,长河落日圆~
2020-7-18 20:09:58