URLhttps://learnscript.net/zh/vscode/debugging/
    复制链接转到说明  示例

    Visual Studio Code 调试功能使用和设置说明

    我被代码海扁署名-非商业-禁演绎
    阅读 7:07·字数 2139·发布 

    Visual Studio Code 调试功能

    Visual Studio Code(VSCode)的调试功能为测试代码提供了极大的便利。本文将介绍如何在 VSCode 中运行调试代码,并解释部分高级设置。

    在 Visual Studio Code 中运行调试代码

    对于某些语言(如 JavaScript、TypeScript),VSCode 已内置了它们的运行调试功能,无需安装其它扩展。

    其它语言(如 Python、C++),通常需要安装启用对应的扩展(例如,调试 Python 需要安装扩展 Python Debugger)。

    要简单的启动代码的调试,你可以打开一个代码文件。然后,在运行和调试面板中点击运行和调试按钮。如果 VSCode 能够确定采用何种配置,那么运行调试会直接开始。否则,会弹出面板让你选择所采用的配置项,这些配置项通常由 VSCode 自身和所安装的扩展提供。

    例如,打开并运行调试一个py脚本文件,可能会看到配置项 Python 文件,选择它即可使用 Python 解释器运行当前的py文件。

    当然,以上的这种方式适用于快速测试单个文件。如果遇到稍微复杂一些的场景(如传递参数、设置环境变量、执行前后任务),那么就需要进行自定义配置。

    Visual Studio Code 中的 launch.json 文件

    launch.json是 VSCode 用于存储运行调试配置项的文件,它位于项目工作区的.vscode文件夹中。通过它,你可以创建并管理自定义的运行调试配置。

    如何创建运行调试配置项?

    运行和调试面板中点击用于创建launch.json文件的链接,或使用菜单项运行 | 添加配置…,或在命令面板中执行命令Debug: Add Configuration…

    VSCode 将根据你的选择,来创建新的运行调试配置项。

    launch.json 文本会导致运行和调试面板发生变化

    一旦你在工作区创建了launch.json文件,运行和调试面板将发生一些变化。比如,其中的运行和调试按钮可能不再显示。

    Visual Studio Code 运行调试配置项

    对于一个运行调试配置项,通常拥有以下重要的设置(属性)。

    name 属性

    name属性是配置项的名称,可显示在运行和调试面板的下拉列表框中。

    type 属性

    type属性表示配置项的类型。相关语言扩展或 VSCode 内置功能将根据该属性来识别配置项。比如,扩展 Python Debugger 可识别type属性为debugpy的配置项。

    request 属性

    request属性为请求类型。其有效值launch表示启动新程序进行调试,attach表示附加到已运行的程序进行调试。

    program 属性

    program属性为要调试的可执行文件或脚本的路径。可以是绝对路径或相对路径(一般情况下,相对路径相对于 VSCode 工作区目录)。

    下面的示例中,文件launch.json包含一个用于运行调试当前 Python 文件的配置项。其中program属性包含了表示当前文件路径的 VSCode 变量file

    launch.json
    {
    	"version": "0.2.0",
    	"configurations": [
    		{
    			"name": "Python 运行当前文件",
    			"type": "debugpy",
    			"request": "launch",
    			"program": "${file}",
    		}
    	]
    }

    为 Visual Studio Code 运行调试添加命令行参数

    配置项的args属性是一个字符串数组,可为运行调试添加命令行参数,参数的名称和值可以合并为一个字符串,或分别作为两个字符串。

    这里,修改之前的配置项,添加命令行参数--name--age,它们的值分别为Jack10

    Python 脚本文件的d.py,显示了所有的命令行参数。

    launch.json
    {
    	// …
    	"args": ["--name Jack","--age","10"],
    }
    d.py
    import sys
    # 显示参数
    print(sys.argv)
    ['\d.py', '--name Jack', '--age', '10']

    为 Visual Studio Code 运行调试设置环境变量

    当程序的行为依赖于环境变量时,你可以在launch.json中为相应的运行调试配置设置环境变量。这相对于直接修改操作系统中的环境变量更加灵活。

    要设置环境变量,可以在配置项中添加env属性。该属性是一个对象,需要设置的环境变量作为对象的属性出现,环境变量的名称作为属性的名称,环境变量的值作为属性的值。

    下面,我们为运行调试添加了环境变量MYNAME,其值为Tom

    为脚本文件d.py添加代码,显示环境变量MYNAME

    launch.json
    {
    	// …
    	"env": {
    		"MYNAME": "Tom",
    	},
    }
    d.py
    # …
    import os
    # 显示环境变量
    print(os.environ.get('MYNAME'))
    Tom

    为 Visual Studio Code 运行调试设置当前工作目录

    配置项的cwd属性,表示了运行调试时终端的当前工作目录。

    改变 cwd 属性的可能后果

    通过cwd属性修改当前工作目录后,如果program属性采用了相对路径,那么 VSCode 可能无法找到需要调试的目标。

    下面,我们更改了当前工作目录,并在代码中显示了它。

    launch.json
    {
    	// …
    	"cwd": "z:\\",
    }
    d.py
    # …
    # 显示当前工作目录
    print(os.getcwd())
    Z:\

    在 Visual Studio Code 运行调试前后执行任务

    如果你需要在运行调试之前或之后执行一些额外的操作(比如,创建或删除某个文件夹),那么可以为配置添加属性preLaunchTaskpostDebugTask即可,属性的值是已存在的任务的名称。

    在下面的示例中,运行调试开始之前将执行任务begin,运行调试结束之后将执行任务end

    launch.json
    {
    	// …
    	"preLaunchTask": "begin",
    	"postDebugTask": "end",
    }

    源码

    launch.json·codebeatme/vscode·GitHub
    d.py·codebeatme/vscode·GitHub

    讲解视频

    如何在 VSCode 中配置 launch.json 进行代码的运行和调试·YouTube如何在 VSCode 中配置 launch.json 进行代码的运行和调试·Bilibili
    如何在 VSCode 中为运行调试设置环境变量·YouTube如何在 VSCode 中为运行调试设置环境变量·Bilibili