温馨提示×

debiangcc调试信息怎加

小樊
36
2026-09-26 01:56:08
栏目: 智能运维

在 Debian 上给 GCC 程序添加调试信息,通常做法是编译时加 -g(或 -ggdb),并避免过度优化。下面按常见场景说明。


一、最基础:加 -g

gcc -g main.c -o main

这样生成的 main 就带有调试符号,可以用 gdb 调试:

gdb ./main

二、常用推荐组合(开发调试)

gcc -g -O0 -Wall -Wextra main.c -o main

说明:

  • -g:生成调试信息
  • -O0:不优化(避免变量被优化掉、代码重排)
  • -Wall -Wextra:常见警告

三、生成更详细的调试信息(GDB 专用)

gcc -ggdb3 -O0 main.c -o main
  • -ggdb3:生成 GDB 最完整的调试信息(宏、内联等)

四、分离调试信息(Debian 常见做法)

Debian 默认常把调试信息放到单独文件,方便发布。

1. 编译时带调试信息

gcc -g main.c -o main

2. 提取调试信息

objcopy --only-keep-debug main main.debug

3. 从原文件中去掉调试信息

strip --strip-debug main

4. 关联调试文件

objcopy --add-gnu-debuglink=main.debug main

调试时:

gdb ./main

GDB 会自动找 main.debug


五、Debian 官方调试包(已安装软件)

如果是系统自带程序(如 bash、coreutils):

# Debian 11+
sudo apt install debuginfod

# 或安装对应 dbgsym 包
sudo apt install bash-dbgsym

新版 Debian 支持:

export DEBUGINFOD_URLS="https://debuginfod.debian.net"

六、Makefile 示例

CFLAGS = -g -O0 -Wall

main: main.c
	gcc $(CFLAGS) main.c -o main

如果你说的是:

  • 内核模块调试
  • CMake 项目
  • 交叉编译
  • GDB 怎么用

可以告诉我具体场景,我给你对应写法。

0 踩