开发工具:Makefile 与 gdb 调试
Makefile 自动化构建、gdb 断点调试/单步/查看变量、VS Code 调试配置
开发工具:Makefile 与 gdb 调试
写 C 程序不光要会写代码,还要会用工具:Makefile 让编译自动化,gdb 让你看程序运行时内部发生了什么。
学完本章你将: 掌握 Makefile 基础、gdb 断点/单步/查看变量、VS Code 调试配置。
Makefile —— 告别手敲 gcc
最简单的 Makefile
makefile
# Makefile
hello: hello.c
gcc hello.c -o hello
clean:
rm -f hello
bash
make # 编译
make clean # 清理
多文件项目的 Makefile
makefile
CC = gcc
CFLAGS = -Wall -Wextra -std=c17 -O2
program: main.o utils.o
$(CC) $(CFLAGS) main.o utils.o -o program
main.o: main.c utils.h
$(CC) $(CFLAGS) -c main.c
utils.o: utils.c utils.h
$(CC) $(CFLAGS) -c utils.c
clean:
rm -f *.o program
💡 Makefile 的核心价值:只重新编译修改过的文件,项目越大越省时间。
gdb 调试 —— 程序的"时光机"
编译时必须加 `-g`
bash
gcc -g hello.c -o hello # -g 包含调试信息
gdb ./hello
常用 gdb 命令
gdb
break main # 在 main 函数设断点
break hello.c:10 # 在第 10 行设断点
run # 开始运行
next # 单步(不进入函数)
step # 单步(进入函数)
continue # 继续运行到下个断点
print x # 查看变量 x 的值
backtrace # 查看调用栈
quit # 退出
调试示例
bash
$ gdb ./hello
(gdb) break main
(gdb) run
# 程序停在 main 第一行
(gdb) next
(gdb) print x
$1 = 42
(gdb) continue
VS Code 调试配置
.vscode/launch.json 关键配置:
json
{
"configurations": [{
"name": "C Debug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/hello",
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"externalConsole": false,
"MIMode": "gdb"
}]
}
按 F5 启动调试,在行号左边点击设断点,左侧面板查看变量值——和 IDE 体验一致。
⚠️ 调试需要以
-g选项编译。发布版本应去掉-g以减小文件体积。