在 Debian 上给 GCC 程序添加调试信息,通常做法是编译时加 -g(或 -ggdb),并避免过度优化。下面按常见场景说明。
-ggcc -g main.c -o main
这样生成的 main 就带有调试符号,可以用 gdb 调试:
gdb ./main
gcc -g -O0 -Wall -Wextra main.c -o main
说明:
-g:生成调试信息-O0:不优化(避免变量被优化掉、代码重排)-Wall -Wextra:常见警告gcc -ggdb3 -O0 main.c -o main
-ggdb3:生成 GDB 最完整的调试信息(宏、内联等)Debian 默认常把调试信息放到单独文件,方便发布。
gcc -g main.c -o main
objcopy --only-keep-debug main main.debug
strip --strip-debug main
objcopy --add-gnu-debuglink=main.debug main
调试时:
gdb ./main
GDB 会自动找 main.debug
如果是系统自带程序(如 bash、coreutils):
# Debian 11+
sudo apt install debuginfod
# 或安装对应 dbgsym 包
sudo apt install bash-dbgsym
新版 Debian 支持:
export DEBUGINFOD_URLS="https://debuginfod.debian.net"
CFLAGS = -g -O0 -Wall
main: main.c
gcc $(CFLAGS) main.c -o main
如果你说的是:
可以告诉我具体场景,我给你对应写法。