VSCode C++ 调试方法

VSCode 调试 C++ 主要就是 .vscode 中的 launch.json 和 tasks.json 的配置。

launch.json 可以通过 vscode 界面 ------》左侧调试功能按钮------》创建 launch.json ------》C++(GDB/LLDB)生成。

其中 launch.json 默认配置如下,主要配置项说明:

  • name:启动项的名字

  • program:指向最终生成的可执行文件的路径

  • args:执行时的输入参数

  • stopAtEntry:自动在 main 函数时停止

    {
    "version": "0.2.0",
    "configurations": [
    {
    "name": "C/C++: g++ build and debug active file",
    "type": "cppdbg",
    "request": "launch",
    "program": "{fileDirname}/{fileBasenameNoExtension}",
    "args": [],
    "stopAtEntry": false,
    "cwd": "${workspaceFolder}",
    "environment": [],
    "externalConsole": false,
    "MIMode": "gdb",
    "miDebuggerPath": "/usr/bin/gdb",
    "setupCommands": [
    {
    "description": "Enable pretty-printing for gdb",
    "text": "-enable-pretty-printing",
    "ignoreFailures": true
    }
    ],
    "preLaunchTask": "C/C++: g++ build active file"
    }
    ]
    }

tasks.json 文件可以通过 vscode 菜单 ------》终端------》配置任务 生成。

其中 tasks.json 默认配置如下,主要配置项说明:

  • command:给出具体编译命令,可以是 /usr/bin/g++,也可以是基于 CMakeLists.txt 直接输入 cmake 命令

  • args:编译命令输入参数

  • group.isDefault:是否为默认编译方式,True 表示默认使用此编译选项

    {
    "version": "2.0.0",
    "tasks": [
    {
    "type": "shell",
    "label": "C/C++: g++ build active file",
    "command": "/usr/bin/g++",
    "args": ["-g", "{file}", "-o", "{fileDirname}/{fileBasenameNoExtension}"], "options": { "cwd": "/usr/bin" }, "problemMatcher": ["gcc"],
    "group": {
    "kind": "build",
    "isDefault": true
    },
    "detail": "Task generated by Debugger."
    }
    ]
    }

CMakeLists.txt 方式

如果使用 CMakeLists.txt,需要在 CMakeLists.txt 中添加如下行,从而以 Debug 方式(一共有以下方式:Debug Release RelWithDebInfo 和 MinSizeRel)编译。

SET(CMAKE_BUILD_TYPE "Debug") 
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

tasks.json 配置中对应 command 修改如下

{
	"version": "2.0.0",
	"tasks": [
        {
            ...
            "command": "cmake . -B build -DCMAKE_BUILD_TYPE=Debug;cmake --build build --target main --config Debug -j",
            "args": [],
            ...
    ]
}
相关推荐
悄悄敲敲敲3 小时前
C++:dfs习题四则
c++·算法·深度优先
安於宿命5 小时前
【Linux】进程间通信——进程池
linux·c++
梦幻通灵6 小时前
IDEA通过Contince接入Deepseek
java·ide·intellij-idea
南郁10 小时前
001-监控你的文件-FSWatch-C++开源库108杰
c++·开源·文件系统·文件监控·fswatch·文件变动信息·libfswatch
linux开发之路10 小时前
C++Linux进阶项目分析-仿写Redis之Qedis
linux·c++·redis·多线程·后端开发
EPSDA11 小时前
Linux线程库与线程库封装
linux·运维·服务器·开发语言·c++
孤独得猿11 小时前
排序算法复习——包括插入排序、希尔排序、冒泡排序、快排(包括霍尔法、挖坑法、快慢指针法)、堆排、选择排序、归并排序等 (代码采用c/c++混编)
c语言·数据结构·c++·笔记·算法·排序算法
编程探索者小陈11 小时前
【C++】智能指针的使用及其原理
开发语言·c++
莲动渔舟11 小时前
赶AI大潮:在VSCode中使用DeepSeek及近百种模型的极简方法
ide·人工智能·vscode·deepseek
咩咩大主教12 小时前
VSCode运行Go程序报错:Unable to process `evaluate`: debuggee is running
开发语言·ide·vscode·golang·编辑器