前言
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