Visual Studio Code配置基础教程
Visual Studio Code配置基础教程

Visual Studio Code配置基础教程

Visual Studio Code是一款轻量级的编辑器,安装包非常小,而且启动速度非常快。以下简称“VScode”。VScode有着非常丰富的插件系统,无论你是编辑HTML、CSS、JS、TS、Vue、React等前端代码,还是JAVA、Python等后端代码。

Snipaste 2021 04 09 13 48 27

C和C++的配置需要额外下载Mingw-w64编辑器(x86_64指64位操作系统,i686指32位系统。dwarf仅支持32为系统是一种,seh调用系统机制处理异常,支持32,64位系统,sjsl跨平台,支持32,64位系统,缺点是:运行速度稍慢,GCC不支持。posix启用了C++11多线程特性),下完Mingw-w64后进入电脑的环境变量界面把Mingw-w64中的bin文件夹的路径添加到环境变量中(文件夹路径推荐不要有中文)。环境变量进入方法 右击我的电脑-属性-高级系统设置-环境变量,或者直接搜索环境变量。进入到环境变量后编辑下方的系统变量中的path点击新建把bin的地址复制上去(记得点击确认不要直接退出,不然系统不会保存)。Snipaste 2021 04 09 13 49 13

可以在系统终端中查看安装是否成功和安装版本,win键+R输入cmd确认(Enter)进了系统终端,在系统终端中输入gcc -v。

Snipaste 2021 04 09 14 20 12

 

在VScode中如果想要写C程序还需要安装必要的插件(C/C++,汉化插件)。Snipaste 2021 04 09 20 23 31
Snipaste 2021 04 09 20 23 53

Snipaste 2021 04 09 20 51 27

以下是演示部分;

运行任意C代码例如;

#include<stdio.h>

int main(void)

{

printf("Hallo World");

return 0;

}

 

 

在右边有个下虫子点击“运行和调试”或者“创建“launch.json文件”选择C++(GDB/LLDB),配置选择gcc.exe。得到Snipaste 2021 04 09 20 59 38

在保存C程序的文件夹中会新创建一个.vscode文件还有一个“launch.json”和“taste,json”文件。

launch.json是.vscode用于调试的配置文件,比如指定调试语言环境,指定调试类型等等。我们第一次运行程序的时候,就可以选择让.vscode自动帮我们创建出来。我们这里以调试python环境为例。

不管你用什么编程环境,其中"type","request","name"这三个是必须要配置的。

type指定编程环境,比如node,php,java我们这里是node

request指定调试模式,vscode只有两种调试模式,launch和attach

name给配置项起一个名字。launch.json是一个configurations,里面可以有很多个配置,这里的name就是配置的名字。

接下来介绍request(属性)中launch(启动)和attach(附加、)的区别:

以launch方式启动的时候,vscode直接从本地项目启动并自动的为我们自动添加一个调试器,这也是为什么我们能在launch模式下打断点的原因。这是我们最经常用的而想以attach方式启动,通常需要一个已经在跑的项目,比如一个web服务,这个服务很可能是在远程或者在本地但是重启速度很慢的那种项目,因为这个web服务

是在远程的我们没法打断点,但是可以通过attach启动的方式在这个远程的服务外面包裹一层调试器,达到调试的目的。

下面是.vscode自动配置的launch.json和tasks.json的代码

launch.json:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",  //C语言的配置
    "configurations": [
        {
            "name": "gcc.exe - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "E:\\mingw64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: gcc.exe 生成活动文件"
        }
    ]
}
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0", //Python语言的配置
    "configurations": [
        {
            "name": "Python: 当前文件",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal"
        },
    ]
}

tasks.json:

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 生成活动文件",
            "command": "E:\\mingw64\\bin\\gcc.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

 

这两个json文件的相关变量是vscode特有的,但是和其他系统环境变量写法相似的变量,在网上找到相关说明如下

变量名 含义
${workspaceRoot} 当前打开的文件夹的绝对路径+文件夹的名字
${workspaceRootFolderName} 当前打开的文件夹的名字
${file} 当前打开正在编辑的文件名,包括绝对路径,文件名,文件后缀名
 

 

${relativeFile}

从当前打开的文件夹到当前打开的文件的路径

如 当前打开的是test文件夹,当前的打开的是main.c,并有test/first/second/main.c

那么此变量代表的是  first / second / main.c

${fileBasename}  当前打开的文件名+后缀名,不包括路径
${fileBasenameNoExtension} 当前打开的文件的文件名,不包括路径和后缀名
${fileDirname} 当前打开的文件所在的绝对路径,不包括文件名
${fileExtname} 当前打开的文件的后缀名
${cwd} 任务开始运行时的当前工作目录
${lineNumber} 当前打开的文件,光标所在的行数

下面是launch attach 类型共有的属性:

  • protocol 设置调试协议
    auto 尝试自动检测目标运行时使用的协议
    inspector 新的V8调试器协议,解决遗留版本的多数问题,node versions >= 6.3 and Electron versions >= 1.7.4.
    legacy 原始的v8调试器协议,node versions < v8.0 and Electron versions < 1.7.4.
  • port调试使用的端口
  • address TCP/IP地址,用于远程调试
  • localRoot 远程调试时映射的本地地址
  • remoteRoot 远程调试时的远程目录地址
  • sourceMaps 默认为true
  • outFiles 当map文件不在js文件同目录时用于指定 sourceMaps的位置
  • restart 自动重启调试
  • timeout 配置自动附加的超时时间
  • stopOnEntry 自动断点到第一行代码处
  • smartStep 自动跳过未映射到源代码的代码
  • skipFiles :[]String,指定跳过单步调试的代码
"skipFiles": [

    "${workspaceFolder}/node_modules/**/*.js",  //跳过node_modules

    "${workspaceFolder}/lib/**/*.js",//跳过lib

    "<node_internals>/**/*.js"//跳过node核心模块

  ]

 

  • trace启用诊断输出

以下是特定于类型 launch(启动)的配置属性:

  • program 指定调试入口文件地址
  • args :[]String 传递给程序的参数,可在process.argv拿到
  • cwd 指定程序启动调试的目录 ,当vscode启动目录不是项目根目录,并且调试npm script时非常有用
  • runtimeExecutable 设置运行时可执行文件路径,默认是node
    可以是其他的执行程序,如npm、nodemon
  • runtimeArgs 传递给运行时可执行文件的参数,例如:

 

     {

            "type": "node",

            "request": "launch",

            "name": "npm launch app",

            "args":["a"],

            "runtimeExecutable": "npm",

            "runtimeArgs": [

                "run-script",

                "app",

                "b"

            ],

            "port": 6666

        }

 

打印参数可以发现 args 、runtimeArgs都会传给程序,但是runtimeArgs参数会紧跟可执行文件

image.png

  • runtimeVersion 设置运行时可执行程序的版本,如果使用nvm,可以切换node.js版本
  • env 添加额外的环境变量
  • envFile 文件加载环境变量
  • console 配置终端可以是外部终端或者内部集成终端,默认值internalConsole
  • outputCapture -如果设置为std,则进程stdout / stderr的输出将显示在调试控制台中,而不是侦听调试端口上的输出。这对于直接写入stdout / stderr流而不是使用console.*API的程序或日志库很有用。
  • autoAttachChildProcesses 跟踪调试对象的所有子过程,并自动附加到在调试模式下启动的子过程

以下是特定于类型 attach(附加)的配置属性:

  • processId 指定nodejs进程id,由于每次启动都会变,传入"${command:PickProcess}"-
4.7 3 投票数
Article Rating
订阅
提醒
0 评论
内联反馈
查看所有评论