[GDB] 使用 GDB 调试程序崩溃

1 GDB 简介

GDB(GNU Debugger)是UNIX及UNIX-like下的强大调试工具,可以调试ada, c, c++, asm, minimal, d, fortran, objective-c, go, java,pascal等语言。
它的官网地址:
https://www.gnu.org/software/gdb/

2 GDB 安装

通常 Ubuntu 系统都会预装某个版本的 GDB,如果没有或者想要安装新版可以使用如下命令:

或者在官网下载新版源码编译安装。

3 GDB 命令行使用

可以用如下 main.cpp 来实验崩溃的调试过程:

3.1 GDB 编译参数

使用 GDB 需要在编译时加入 -g 参数。例如:
命令行的方式:

CMake 的方式:在 CMakeLists.txt 中加入类似如下参数:

完整 CMakeLists.txt 示例如下:

3.2 GDB 崩溃调试

一个简单步骤如下:

1)编译文件
使用 gcc 的话:

使用 CMake 的话:

编译出的可执行文件为 main。

2)装载 main
运行命令:

正常的话输出如下:

3)运行 main
运行包含无参数和有参数运行两种方式,命令如下:
无参数运行方式,运行:

有参数运行方式,运行:

或者使用 set args 命令:

如果顺利的话可能直接显示出崩溃的代码位置,例如:

当然也可以查看 back trace。

4)查看 back trace
运行命令:

显示:

提示崩溃在第 10 行,对应代码就是:

5)关闭 GDB
运行:

参考材料

[1] https://www.yanbinghu.com/2019/04/20/41283.html
[2] https://www.jianshu.com/p/4da57a8aa0aa
[3] https://blog.csdn.net/tekenuo/article/details/88394780
[4] https://www.gnu.org/software/gdb/documentation/

Add a Comment

您的邮箱地址不会被公开。 必填项已用 * 标注