温馨提示×

如何调试ubuntu的c++代码

小樊
54
2026-09-14 12:54:26
栏目: 编程语言

在 Ubuntu 上调试 C++ 代码,常见且高效的流程如下(从基础到进阶):


一、准备工作(编译时必做)

一定要加调试信息(-g),并关闭过度优化

g++ -g -O0 main.cpp -o main
  • -g:生成调试符号
  • -O0:不使用优化(否则变量可能被优化掉)

二、使用 GDB 调试(最常用)

1. 启动 GDB

gdb ./main

2. 常用 GDB 命令

命令 作用
run / r 运行程序
break main 在 main 函数设断点
break file.cpp:20 在某一行设断点
next / n 单步执行(不进函数)
step / s 单步进入函数
print x / p x 打印变量
backtrace / bt 查看调用栈
continue / c 继续执行
quit / q 退出

3. 调试崩溃(Segmentation fault)

gdb ./main
run
# 崩溃后
bt

可快速定位哪一行出错。


三、使用 VS Code(图形化调试,推荐)

1. 安装

sudo apt install gdb
code .

2. 配置 launch.json

示例:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "C++ Debug",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/main",
      "args": [],
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}",
      "environment": [],
      "externalConsole": false,
      "MIMode": "gdb"
    }
  ]
}

3. 设置断点 → F5 启动调试


四、使用 CMake + 调试

set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0")

构建:

mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
gdb ./your_program

五、日志调试(简单直接)

#include <iostream>
std::cerr << "x = " << x << std::endl;

或用 spdlog、glog 等库。


六、常见调试问题

  • 变量看不到值:没加 -g 或开了 -O2
  • 断点无效:源码和编译文件不一致
  • 多线程调试:info threads、thread 2

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

  • 用的是 命令行 / VS Code / CLion
  • 是 普通程序 / 多线程 / 崩溃问题

我可以给你更针对性的调试方案。

0 踩