vscode 文件配置launch.json tasks.json

转载来自:https://blog.csdn.net/qq_33973359/article/details/105720511

这个是mac的  windows同样适用 已经复现

文章目录

1. 环境
2. 安装插件
3. 添加 lauch.json
4. 添加 tasks.json
5. 开始调试
6. 总结
1. 环境
macOS:10.14

VSCode:1.44.2

Xcode:11.3.1(会用到Xcode的工具链,如lldb、clang)

2. 安装插件
编辑、调试C/C++程序,需要安装vscode插件:C/C++。插件官网地址。

现在,用于演示的该文件夹中只有hello.cpp一个文件。继续往下阅读,看看如何配置文件。

 

 

3. 添加 lauch.json
lauch.json 用于设置调试、运行时的东东;

tasks.json 用于设置编译时的东东。

1.点击顶部菜单栏运行(Run)-> 添加配置(Add Configuration);

 

 

2. 点击 C++(GDB/LLDB)。

 

 

3.点击下图中的第一个clang++ - 生成和调试活动文件。因为该示例使用的C++语言,并且用clang编译器编译(和gcc一样是Mac中自带的,但是推荐用clang,并且不自带g++,所以gcc系的编译器不能默认还不能编译c++,图中的g++是博主自己安装的;图中两个clang++XXX经过实测生成的文件是一样的)。

会自动生成.vscode文件夹和launch.json文件。
需要特别注意的键:

preLaunchTask:该值需要与tasks.json中的label相同,否则调试时会提示找不到;
externalConsole:如果需要输入东西,最好修改为true使用外部控制台(在运行时额外打开终端)。否则用vscode内置的控制台不能输入东西(不是内联控制台,内联控制台和外部控制台其实是一样的,但是这里调试的时候没有内联控制台这个选项)
其他的键,一般不用修改:

name:显示在‘’调试”(Run)侧边栏的名字;
type:类型。不能改;
request:有launch和attach可选,这里填launch,按下F5就可以启动调试了;而不是attach(附加);
program:程序所在路径和程序名,更多变量在官方文档;
args:这里填命令行参数(main函数的形参),如果没有可不填;
stopAtEntry:为true时,在开始运行程序时,不立刻往后执行,先暂停一下,一般填false;
cwd:目标工作目录,在哪个目录调试程序,一般在当前文件夹(项目所在文件夹);
environment:临时手动添加环境变量;
MIMode:指定调试器gdb或lldb。Mac下推荐用lldb,Xcode下载好就有; 
可以通过鼠标悬停在关键字(键名)上,查看官方解释。

 

 

 

至此,launch.json已经配置好了。

4. 添加 tasks.json

lauch.json 用于设置调试、运行时的东东;

tasks.json 用于设置编译时的东东。

把界面点到代码的页面,别停留在launch.json,点击顶部菜单栏终端(Terminal)-> 配置任务(Configure Tasks);

 

 


同样选择clang++的选项,博主这里有两个clang++相关的东东,区别在clang++的路径不一样,博主这里用路径为/usr/bin/clang++的好使,用Xcode路径的那个不好使。

 

 


点击后就会在.vscode中生成tasks.json文件。
需要特别注意的键:

label:需要与launch.json中的preLaunchTask保持一致,否则调试时会提示找不到;
command:编译器所在的位置,博主用的/usr/bin/clang++;
args:编译参数,如果你在命令行用过gcc编译器应该知道这些选项和值都是啥。clang++命令的选项与gcc的类似,可以根据自己需要删改,如需要开启O2来编译,则可以加上两行"-O2"。更多变量在官方文档;
cwd:运行时程序的工作目录,一般与command编译器的路径一致。博主这里是手动修改了command值成截图中样子,所以两处不同,但是也可以使用;
可以通过鼠标悬停在关键字(键名)上,查看官方解释。

 

 

 

至此,tasks.json已经配置完成

5. 开始调试
点击运行->启动调试,或按键盘F5,或调试()侧边栏->绿色小箭头,开始调试。

如图,博主加了断点(在行号前点一下)、用了外部控制台。窗口顶部中间或触控栏上可以单步往下执行和终止程序。

 

 

 

6. 总结
关键点:

配置lauch.json和tasks.json先后顺序可随意;
tasks.json的label和launch.json的preLaunchTask要保持一致,否则调试时会提示找不到;
如果需要输入东东,一定要将launch.json中的externalConsole设置为true,只有这种方法可以在调试时输入。

最后生成的json文件如下

tasks.json

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",//label:需要与launch.json中的preLaunchTask保持一致,否则调试时会提示找不到;
            "command": "D:\\mingw64\\bin\\g++.exe", //编译器所在的位置
            //编译参数,如果你在命令行用过gcc编译器应该知道这些选项和值都是啥。clang++命令的选项与gcc的类似
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",//这里是单文件编译的 如果要变成多文件编译的话要改下  改成${fileDirname}\\*.cpp
"-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

launch.json

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++.exe - 生成和调试活动文件",
            // type 告诉vscode编译器的类型,我用的MinGW64也就是g++,这里是cppdgb
            // 这个是规定的,不是随便写,比如msvc编译器就是cppvsdbg
            "type": "cppdbg",
            "request": "launch",//有launch和attach可选,这里填launch,按下F5就可以启动调试了;而不是attach(附加)
            // program 这个是你的可执行程序位置,这里可以根据自己的tasks.json生成
            // 程序的位置自定义修改,等会参照后面的tasks.json内容
            //程序所在路径和程序名
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            //这里填命令行参数(main函数的形参)
            "args": [],
            //为true时,在开始运行程序时,不立刻往后执行,先暂停一下,一般填false;
            "stopAtEntry": false,
            //目标工作目录,在哪个目录调试程序,一般在当前文件夹(项目所在文件夹);
            "cwd": "${fileDirname}",
            //临时手动添加环境变量;
            "environment": [],
            //如果需要输入东西,最好修改为true使用外部控制台(在运行时额外打开终端)。否则用vscode内置的控制台不能输入东西(不是内联控制台,内联控制台和外部控制台其实是一样的,但是这里调试的时候没有内联控制台这个选项)
            "externalConsole": false, 
            //指定调试器gdb或lldb
            "MIMode": "gdb",
            //调试器的路径
            "miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            //这个表示 执行调试前 要完成的任务 该值需要与tasks.json中的label相同,否则调试时会提示找不到;
            "preLaunchTask": "C/C++: g++.exe 生成活动文件"
        }
    ]
}

 

 

 

 

 

 

单文件编译和多文件编译

比如现在是多文件

 

 如果还是file的话 就会出现这个错误....

现在改下....好吧 我还是出现错误?

posted @ 2021-12-14 17:51  冰糖葫芦很乖  阅读(15290)  评论(0编辑  收藏  举报