Sustie

主页 所有文章 文章检索

关于VSCode的launch.json

VSCode 工作区的.vscode/launch.json文件中存储着调试和运行的配置。

基本结构

launch.json的基本结构如下:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "foo",
      "type": "debugpy",
      "request": "launch",
      "program": "${workspaceFolder}/bar.py"
    }
    // ...
  ]
}

首先有一个version字段指定配置文件的版本,然后在configurations数组中指定调试或运行的参数。

必须参数

每一个启动项都必须有这 4 个参数:

  1. name:显示在 VSCode 界面上的启动项名称。
  2. type:要使用的 debugger。debugger 都是由插件提供的。
  3. request:只能是launch或者attachlaunch表示调试时由 VSCode 启动一个新的进程,attach则表示让 debugger 连接到现有的进程。一般都是选择launch
  4. program:程序的入口文件。

debugpy 的参数

cwd参数可以指定运行脚本时的工作目录,默认值是${workspaceFolder}

justMyCode参数的默认值是true,表示不调试不在当前工作区内的代码(比如标准库、第三方库),建议设置为false

切换调试和运行模式

在 VSCode 里,调试和运行是共享配置的。按下 F5 会开始调试当前的选中项,按下 Ctrl+F5 则会以运行模式(不启动 debugger)启动当前的选中项。

同时调试多个对象

假设有server.pyclient.py两个程序需要同时启动,只需要这么编写.vscode/launch.json即可:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Client",
      "type": "debugpy",
      "request": "launch",
      "program": "${workspaceFolder}/client.py"
    },
    {
      "name": "Server",
      "type": "debugpy",
      "request": "launch",
      "program": "${workspaceFolder}/server.py"
    }
  ],
  "compounds": [
    {
      "name": "Server/Client",
      "configurations": ["Server", "Client"],
      "stopAll": true
    }
  ]
}

接着运行名为Server/Client的启动项即可同时启动ServerClient两个调试任务。启用stopAll属性之后,一旦关闭正在调试的任何一个程序,就会将其他程序也一并关闭。