温馨提示×

怎样配置Linux C++调试器

小樊
47
2026-07-05 18:41:03
栏目: 编程语言

配置 Linux 下的 C++ 调试器通常围绕 GDB(或 LLDB) 展开,同时配合 构建系统、IDE / 编辑器 使用。下面按最常见、最实用的方式一步一步说明。


一、安装调试器

1️⃣ GDB(最常见)

# Debian / Ubuntu
sudo apt update
sudo apt install gdb

# CentOS / RHEL / Rocky
sudo yum install gdb
# 或
sudo dnf install gdb

# Arch
sudo pacman -S gdb

验证:

gdb --version

2️⃣ LLDB(Clang 工具链)

sudo apt install lldb
# 或
sudo dnf install lldb

二、编译时生成调试信息(非常关键)

没有 -g,调试器几乎没用

示例(g++ / clang++)

g++ -g -O0 -std=c++17 main.cpp -o app

推荐参数说明:

参数 作用
-g 生成调试信息
-O0 关闭优化(方便调试)
-std=c++17 C++ 标准
-Wall -Wextra 编译警告

⚠️ 不要同时用 -O2/-O3 调试


三、使用 GDB 调试(命令行)

1️⃣ 启动调试

gdb ./app

或:

gdb --args ./app arg1 arg2

2️⃣ 常用 GDB 命令

命令 说明
run / r 运行程序
break main 在 main 设断点
break file.cpp:20 指定文件行号
next / n 下一行(不进入函数)
step / s 进入函数
print x 打印变量
backtrace / bt 查看调用栈
continue / c 继续执行
quit 退出

示例:

(gdb) break main
(gdb) run
(gdb) next
(gdb) print i

四、调试已崩溃程序(core dump)

1️⃣ 开启 core dump

ulimit -c unlimited

2️⃣ 程序崩溃后

gdb ./app core

快速定位:

bt

五、在 IDE / 编辑器中配置调试器(推荐)

✅ VS Code(最流行)

1️⃣ 安装插件

  • C/C++
  • C/C++ Extension Pack

2️⃣ 编译带调试信息

g++ -g main.cpp -o app

3️⃣ 配置 launch.json

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "C++ Debug",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/app",
      "args": [],
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}",
      "environment": [],
      "externalConsole": false,
      "MIMode": "gdb",
      "setupCommands": [
        {
          "description": "Enable pretty-printing",
          "text": "-enable-pretty-printing"
        }
      ]
    }
  ]
}

F5 即可调试 ✅


✅ CLion(开箱即用)

  • 自动识别 CMake
  • 直接点击调试按钮
  • 无需手动配置 GDB

六、CMake 项目调试配置

set(CMAKE_BUILD_TYPE Debug)

或:

cmake -DCMAKE_BUILD_TYPE=Debug ..

推荐:

add_compile_options(-g -O0)

七、常见问题排查

❓ 看不到变量 / 显示 <optimized out>

✅ 原因:开了优化
✅ 解决:

-g -O0

❓ 无法设置断点

✅ 检查是否:

  • 编译时加了 -g
  • 程序路径正确
  • 文件未 strip

❓ STL 容器显示不友好

✅ 启用 pretty printer(VS Code 默认开启)


八、推荐调试组合(总结)

场景 推荐
新手 GDB + VS Code
大型项目 CMake + GDB
Clang 工具链 LLDB
快速定位崩溃 core dump + GDB

如果你愿意,可以告诉我:

  • ✅ 用的 发行版
  • 编译器(g++ / clang)
  • 是否用 CMake / Makefile
  • 是否用 VS Code / CLion

我可以给你一份完全针对你环境的配置示例

0