当前位置: 代码网 > it编程>编程语言>C/C++ > Ubuntu 环境下的 C/C++ 编译与调试配置方法

Ubuntu 环境下的 C/C++ 编译与调试配置方法

2024年11月29日 C/C++ 我要评论
详细教学文档:ubuntu 环境下的 c/c++ 编译与调试配置本文档将手把手引导你完成在 ubuntu 环境中设置 vs code 的 tasks.json 和 launch.json,实现以下目标

详细教学文档:ubuntu 环境下的 c/c++ 编译与调试配置

本文档将手把手引导你完成在 ubuntu 环境中设置 vs code 的 tasks.jsonlaunch.json,实现以下目标:

  • 统一管理输出文件:将所有编译生成的可执行文件统一存放到项目的 build 目录。
  • 优化调试流程:调试器自动定位 build 中的可执行文件,免去手动调整路径的麻烦。
  • 跨平台兼容性:确保配置适用于 ubuntu 和其他类 unix 系统。

前提条件

在开始之前,请确保系统已安装以下工具:

g++ 编译器
安装命令:

sudo apt install g++

gdb 调试器
安装命令:

sudo apt install gdb

vs code 扩展

c/c++ 插件(microsoft 提供):在扩展市场中搜索 “c/c++” 并安装。

创建项目目录结构

建议项目目录结构如下:

project-root/
├── build/           # 编译生成的可执行文件目录
├── src/             # 源代码文件目录
│   ├── main.cpp     # 示例源代码文件
├── tasks.json       # vs code 任务配置文件
└── launch.json      # vs code 调试配置文件

执行以下命令创建目录结构:

mkdir -p project-root/build
mkdir -p project-root/src

将你的源代码放入 src 目录,例如创建一个简单的 main.cpp

#include <iostream>
int main() {
    std::cout << "hello, world!" << std::endl;
    return 0;
}

配置 tasks.json 文件路径

tasks.json 保存到项目目录下的 .vscode 文件夹中。如果文件夹不存在,使用以下命令创建:

mkdir -p project-root/.vscode
touch project-root/.vscode/tasks.json

完整配置内容

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "c/c++: g++ 编译到 build 目录 (ubuntu)",
            "command": "/usr/bin/g++",
            "args": [
                "-fdiagnostics-color=always",   // 彩色错误提示
                "-g",                          // 启用调试信息
                "${workspacefolder}/src/${filebasename}", // 指定源文件路径
                "-o",                          // 输出选项
                "${workspacefolder}/build/${filebasenamenoextension}" // 输出文件路径
            ],
            "options": {
                "cwd": "${workspacefolder}"     // 设置工作目录为项目根目录
            },
            "problemmatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isdefault": true              // 默认构建任务
            },
            "detail": "将当前活动文件编译到 build 目录中"
        }
    ]
}

关键解释

  • ${workspacefolder}:指代项目根目录。
  • ${filebasename}:当前活动文件的文件名(包括扩展名)。
  • ${filebasenamenoextension}:当前活动文件的文件名(不包括扩展名)。
  • -g:开启调试符号,支持调试功能。

配置 launch.json 文件路径

launch.json 保存到 .vscode 文件夹中:

touch project-root/.vscode/launch.json

完整配置内容

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "c/c++ runner: debug session",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspacefolder}/build/${filebasenamenoextension}", // 指向 build 中的可执行文件
      "args": [],                           // 可选参数,留空
      "stopatentry": false,                 // 是否在入口处停止
      "cwd": "${workspacefolder}/build",    // 调试时的工作目录
      "environment": [],                    // 环境变量
      "externalconsole": false,             // 使用内嵌终端
      "mimode": "gdb",                      // 使用 gdb 调试
      "midebuggerpath": "/usr/bin/gdb",     // gdb 路径
      "setupcommands": [
        {
          "description": "enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignorefailures": true
        }
      ]
    }
  ]
}

关键解释

  • program:动态指向 build 目录中的可执行文件,自动根据源文件名匹配。
  • cwd:调试器工作目录,设置为 build
  • midebuggerpath:指定调试器路径。

使用步骤

1. 编译程序

  • 打开源文件,例如 src/main.cpp
  • 按快捷键 ctrl + shift + b 或从菜单中选择 任务 -> 运行任务
  • 确保可执行文件生成到 build 目录,例如 build/main

2. 调试程序

  • 按快捷键 f5 或从菜单中选择 运行 -> 启动调试
  • 程序将在 build 目录下运行,调试器会附加到进程。

常见问题排查

问题 1:g++gdb 未安装

解决方法

sudo apt install g++ gdb

问题 2:build 目录不存在或无写权限

解决方法

mkdir -p buildchmod +w build

问题 3:调试时程序无法找到输入文件

原因:默认工作目录为 build
解决方法:将输入文件复制到 build 目录,或使用绝对路径。

最终效果总结

  • 统一输出路径:所有可执行文件存储在 build 目录,管理更清晰。
  • 一键调试:按 f5 即可运行调试,无需手动配置路径。
  • 易于扩展:适用于多文件项目,通过修改 tasks.jsonargs 增加编译参数即可支持复杂构建需求。

祝你使用愉快!

到此这篇关于ubuntu 环境下的 c/c++ 编译与调试配置的文章就介绍到这了,更多相关ubuntu 编译调试 c++内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com