参考文档:
code.visualstudio.com/docs/editor/variables-reference
code.visualstudio.com/docs/editor/tasks
主要修改task.json下的"args"、launch.json中的"program",“args”
注意task.json中的label以及launch.json中的preLaunchTask对应的要保持一致
几个比较常用的:
- ${workspaceFoler} vscode打开的文件夹路径
- ${file} 当前打开的文件路径
- ${fileDirname} 当前打开的文件的路径(不包括文件名)
首先,注意一点:
g++进行调试时需要先运行一遍,再开启调试模式,就可以正常进行了
tasks.json文件:
这里的type可以是cppbuild,也可以是shell,是shell的话要按照cmake的规则配置
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++-9 生成活动文件",
"command": "/usr/bin/g++-9",
"args": [
"-fdiagnostics-color=always",
"-g",
"${workspaceFolder}/src/*.cpp",
"-I",
"${workspaceFolder}/include",
"-o",
"${workspaceFolder}/build/debug_test"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
]
}
shell版本(cmake版本):
{
"version": "2.0.0",
//这里相当于是cd build文件夹
"options":{
"cwd":"${workspaceFolder}/build"
},
"tasks": [
//执行cmake ..命令
{
"type": "shell",
"label":"cmake",
"command":"cmake",
"args":[
".."
]
},
//执行make命令
{
"label":"make",
"group":{
"kind":"build",
"isDefault":true
},
"command":"make",
"args":[
]
},
//这个label做了两件事cmake .. make
{
"label":"Build",
"dependsOrder":"sequence", //按列出的顺序执行任务依赖项
"dependsOn":[
"cmake",
"make"
]
}
]
}
launch.json文件:(原始)
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": []
}
launch.json文件:(现在)
这个设置同样适用于cppbuild的task.json文件和shell版本的cmake task.json文案金
重要的几个设置:"program"和"preLaunchTask"这两个参数很重要
{
"version":"0.2.0",
"configurations":[
{
"name":"g++-8 - 生成可调试活动文件",
"type":"cppdbg",
"request":"launch",
"program":"${workspaceFolder}/build/debug_test", //这里的debug_test是可执行文件,是需要提前编译好放在这个目录下的,如果没有这个可执行文件,会报错,需要通过g++ src/function.cpp src/main.cpp -Iinclude -o build/debug_test这个命令生成可执行文件
"args":["hello_debug!"],
"stopAtEntry":false,
"cwd":"${workspaceFolder}",
"environment":[],
"externalConsole":false,
"MIMode":"gdb",
//下面这些还没研究明白是干啥的,还不能用
/*"setupComands":[
{
"description":"为gdb启动整齐打印",
"text":"-enable-pretty-printing",
"ignoreFailures":true
}
]
*/
//下面的preLaunchTask参数要么是Build,要么是cppbuild,与上面的tasks.json中的type参数保持一致
"preLaunchTask":"Build",
"miDebuggerPath":"/usr/bin/gdb"
}
]
}
CMakeLists.txt文件的简写
cmake_minimum_required(VERSION 3.0)
project(HELLOWORLD)
# 指定include目录
include_directories(${CMAKE_SOURCE_DIR}/include)
# 指定编写文件所需要的C++的一些参数
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O2 -Wall")
# 生成可以被调试的可执行文件
set(CMAKE_BUILD_TYPE Debug)
# 指定要执行
add_executable(helloWorld_cmake helloWorld.cpp)
文件目录:
f5:调试模式
f10:单步越过,下一步
f11:单步进入