梗概:

位于.vscode/launch.json

生成预配置的调试文件:

1. 如果还没有launch.json文件

  1. 点击调试栏目
  2. 点击创建调试配置文件
  3. 按照指引点击即可

2. 如果已经存在了launch.json文件

  1. 进入到launch.json文件中
  2. 点击右下角的添加配置项按钮
  3. 选择对应的预制项

配置项详细说明:

1. 公共属性

  • namedebug 命令的名称,在 debug 下拉窗口显示
  • type: 调试类型,根据语言选择,JavaScript一般为node
  • request: 调试启动类型:launch: 就是以 debug 模式启动调试;attach: 就是附加到已经启动的进程开启 debug 模式并调试
  • 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 指定跳过单步调试的代码
  • trace 启用诊断输出

2. launch模式的专属配置项

  • program 指定调试入口文件地址
  • args 传递给程序的参数,可在process.argv拿到
  • cwd 指定程序启动调试的目录
  • runtimeExecutable 设置运行时可执行文件路径,默认是node,可以是其他的执行程序,如- npmnodemon
  • runtimeArgs 传递给运行时可执行文件的参数
  • runtimeVersion 设置运行时可执行程序的版本,如果使用 nvm,可以切换node.js版本
  • env 添加额外的环境变量
  • envFile 文件加载环境变量
  • console 配置终端可以是外部终端或者内部集成终端,默认值 internalConsole
  • autoAttachChildProcesses 跟踪调试对象的所有子过程,并自动附加到在调试模式下启动的- 子过程

3. attach 模式的专属配置项

  • processId 指定nodejs进程id, 由于每次启动都会变,传入"${command:PickProcess}"

4. 平台特有属性

"windows":{/*专属配置项*/}
"linux":{/*专属配置项*/}
"osx":{/*专属配置项*/}

但凡被windows、linux、osx包裹的属性只会在对应平台生效,如:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
      "args": ["myFolder/path/app.js"],
      "windows": {
        "args": ["myFolder\\path\\app.js"]
      },
      "osx": {
        "stopOnEntry": false
      }
    }
  ]
}

5. launch.json 默认环境变量

  • ${workspaceFolder}:当前打开工程的路径。
  • ${file}:当前打开文件的路径。
  • ${fileBasename}:当前打开文件的名字,包含后缀名。
  • ${fileBasenameNoExtension}: 当前打开的文件的无后缀名子
  • ${fileDirname}:当前打开文件所在的文件夹的路径。
  • ${fileExtname}:当前打开文件的后缀名。
  • ${cwd}:当前执行目录