Ubuntu 環(huán)境下的 C/C++ 編譯與調(diào)試配置方法
詳細(xì)教學(xué)文檔:Ubuntu 環(huán)境下的 C/C++ 編譯與調(diào)試配置
本文檔將手把手引導(dǎo)你完成在 Ubuntu 環(huán)境中設(shè)置 VS Code 的 tasks.json 和 launch.json,實(shí)現(xiàn)以下目標(biāo):
- 統(tǒng)一管理輸出文件:將所有編譯生成的可執(zhí)行文件統(tǒng)一存放到項(xiàng)目的
build目錄。 - 優(yōu)化調(diào)試流程:調(diào)試器自動定位
build中的可執(zhí)行文件,免去手動調(diào)整路徑的麻煩。 - 跨平臺兼容性:確保配置適用于 Ubuntu 和其他類 Unix 系統(tǒng)。
前提條件
在開始之前,請確保系統(tǒng)已安裝以下工具:
g++ 編譯器
安裝命令:
sudo apt install g++
gdb 調(diào)試器
安裝命令:
sudo apt install gdb
VS Code 擴(kuò)展:
C/C++ 插件(Microsoft 提供):在擴(kuò)展市場中搜索 “C/C++” 并安裝。
創(chuàng)建項(xiàng)目目錄結(jié)構(gòu)
建議項(xiàng)目目錄結(jié)構(gòu)如下:
project-root/ ├── build/ # 編譯生成的可執(zhí)行文件目錄 ├── src/ # 源代碼文件目錄 │ ├── main.cpp # 示例源代碼文件 ├── tasks.json # VS Code 任務(wù)配置文件 └── launch.json # VS Code 調(diào)試配置文件
執(zhí)行以下命令創(chuàng)建目錄結(jié)構(gòu):
mkdir -p project-root/build mkdir -p project-root/src
將你的源代碼放入 src 目錄,例如創(chuàng)建一個簡單的 main.cpp:
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}配置 tasks.json 文件路徑
將 tasks.json 保存到項(xiàng)目目錄下的 .vscode 文件夾中。如果文件夾不存在,使用以下命令創(chuàng)建:
mkdir -p project-root/.vscode touch project-root/.vscode/tasks.json
完整配置內(nèi)容
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ 編譯到 build 目錄 (Ubuntu)",
"command": "/usr/bin/g++",
"args": [
"-fdiagnostics-color=always", // 彩色錯誤提示
"-g", // 啟用調(diào)試信息
"${workspaceFolder}/src/${fileBasename}", // 指定源文件路徑
"-o", // 輸出選項(xiàng)
"${workspaceFolder}/build/${fileBasenameNoExtension}" // 輸出文件路徑
],
"options": {
"cwd": "${workspaceFolder}" // 設(shè)置工作目錄為項(xiàng)目根目錄
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true // 默認(rèn)構(gòu)建任務(wù)
},
"detail": "將當(dāng)前活動文件編譯到 build 目錄中"
}
]
}關(guān)鍵解釋
${workspaceFolder}:指代項(xiàng)目根目錄。${fileBasename}:當(dāng)前活動文件的文件名(包括擴(kuò)展名)。${fileBasenameNoExtension}:當(dāng)前活動文件的文件名(不包括擴(kuò)展名)。-g:開啟調(diào)試符號,支持調(diào)試功能。
配置 launch.json 文件路徑
將 launch.json 保存到 .vscode 文件夾中:
touch project-root/.vscode/launch.json
完整配置內(nèi)容
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++ Runner: Debug Session",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/${fileBasenameNoExtension}", // 指向 build 中的可執(zhí)行文件
"args": [], // 可選參數(shù),留空
"stopAtEntry": false, // 是否在入口處停止
"cwd": "${workspaceFolder}/build", // 調(diào)試時的工作目錄
"environment": [], // 環(huán)境變量
"externalConsole": false, // 使用內(nèi)嵌終端
"MIMode": "gdb", // 使用 gdb 調(diào)試
"miDebuggerPath": "/usr/bin/gdb", // gdb 路徑
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}關(guān)鍵解釋
program:動態(tài)指向build目錄中的可執(zhí)行文件,自動根據(jù)源文件名匹配。cwd:調(diào)試器工作目錄,設(shè)置為build。miDebuggerPath:指定調(diào)試器路徑。
使用步驟
1. 編譯程序
- 打開源文件,例如
src/main.cpp。 - 按快捷鍵
Ctrl + Shift + B或從菜單中選擇 任務(wù) -> 運(yùn)行任務(wù)。 - 確保可執(zhí)行文件生成到
build目錄,例如build/main。
2. 調(diào)試程序
- 按快捷鍵
F5或從菜單中選擇 運(yùn)行 -> 啟動調(diào)試。 - 程序?qū)⒃?
build目錄下運(yùn)行,調(diào)試器會附加到進(jìn)程。
常見問題排查
問題 1:g++ 或 gdb 未安裝
解決方法:
sudo apt install g++ gdb
問題 2:build 目錄不存在或無寫權(quán)限
解決方法:
mkdir -p buildchmod +w build
問題 3:調(diào)試時程序無法找到輸入文件
原因:默認(rèn)工作目錄為 build。
解決方法:將輸入文件復(fù)制到 build 目錄,或使用絕對路徑。
最終效果總結(jié)
- 統(tǒng)一輸出路徑:所有可執(zhí)行文件存儲在
build目錄,管理更清晰。 - 一鍵調(diào)試:按
F5即可運(yùn)行調(diào)試,無需手動配置路徑。 - 易于擴(kuò)展:適用于多文件項(xiàng)目,通過修改
tasks.json的args增加編譯參數(shù)即可支持復(fù)雜構(gòu)建需求。
祝你使用愉快!
到此這篇關(guān)于Ubuntu 環(huán)境下的 C/C++ 編譯與調(diào)試配置的文章就介紹到這了,更多相關(guān)Ubuntu 編譯調(diào)試 C++內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言中結(jié)構(gòu)體和共用體實(shí)例教程
這篇文章主要給大家介紹了關(guān)于C語言中結(jié)構(gòu)體和共用體的相關(guān)資料,結(jié)構(gòu)體是一種自定義的復(fù)合數(shù)據(jù)類型,共用體也叫聯(lián)合體,使幾個不同類型的變量共占一段內(nèi)存(相互覆蓋),需要的朋友可以參考下2021-06-06
輸入一個字符串,取出其中的整數(shù)(實(shí)現(xiàn)代碼)
輸入一個字符串,內(nèi)含所有數(shù)字和非數(shù)字字符。將其中連續(xù)的數(shù)字作為一個整數(shù),依次存放到一個數(shù)組中,統(tǒng)計共有多少個整數(shù),并輸出這些數(shù)2013-09-09
c++中struct和class的區(qū)別小結(jié)
在C++中,class和struct都是用于定義自定義數(shù)據(jù)類型的關(guān)鍵字,本文主要介紹了c++中struct和class的區(qū)別小結(jié),具有一定的參考價值,感興趣的可以了解一下2023-08-08

