软件发布通常分为 debug 模式和 release 模式。以 VS2022 为例,开发期间处于 debug 模式,发布时使用 release 模式。Windows 下 VS 编译的程序默认可调试,但 Linux 下 gcc/g++ 默认工作模式类似 release,编译后的代码不能直接调试。因此,需要在编译时加上 -g 选项以生成调试信息。一句话总结:在 Linux 下程序要进行调试,必须处于 debug 模式,即编译时加上 -g 选项。
1. 快速认识 GDB
进入 GDB 开始调试:gdb 可执行文件。退出 GDB 环境:quit。
进入 GDB 环境后,输入 list(简写为 l)并回车可查看程序的源代码;也可以输入 l 行号,表示从某行开始展示源代码。使用 l 指令只能显示一部分源代码,若想显示剩余部分源代码按回车键即可。
打断点:b 行号。
将断点打在第 19 行再输入 r(run)运行,就能直接停到断点处了。
想要直接将程序跑完,输入 c(continue)就可以了:
2. 优化 GDB 体验:使用 CGDB
前面已经演示了 GDB 的基本使用,但是使用的过程中会发现 GDB 太恶心人了,想查看源代码结果还与调试信息混在一起了,所以后面的演示统一使用 CGDB,CGDB 和 GDB 是一模一样的,但是 CGDB 可以动态呈现我们的源代码。
用于测试 GDB 使用方法的样例代码:
#include <stdio.h>
int Sum(int s, int e) {
int result = 0;
for (int i = s; i <= e; i++) {
result += i;
}
return result;
}
int {
start = ;
end = ;
();
n = (start, end);
(, start, end, n);
;
}


