VSCode 调试技巧

date
Jun 14, 2023
slug
vscode-debug-skill
status
Published
tags
VSCode
summary
VSCode 调试技巧总结
type
Post

调试流程

  1. 在需要调试的源码左侧单击创建断点
    1. notion image
  1. 点击vscode左侧的debug工具
    1. notion image
  1. 点击左上角的设置按钮进入launch.json 点击添加配置选择配置
    1. notion image
  1. 在配置中选择 “node.js 启动程序”会生成一下配置文件,修改配置中program为调试文件
    1. notion image
  1. 配置完成后,在设置按钮左侧选择执行的名称并点击调试按钮进入调试
    1. notion image

功能按钮介绍

notion image
按钮从左到右功能依次为:
  • 按钮1:运行/继续 F5,直接跳转到下一断点;
  • 按钮2:单步跳过(又叫逐过程) F10,按语句单步执行。当有函数时,不会进入函数;
  • 按钮3:单步调试(又叫逐语句) F11:当有函数时,点击这个按钮,会进入这个函数内;
  • 按钮4:单步跳出 ⇧F11:如果有循环,点击该按钮,会执行到循环外面的语句;
  • 按钮5:重启 ⇧⌘F5;
  • 按钮6:停止 ⇧F5。

launch.json 常用变量

  • ${workspaceRoot}:VS Code当前打开的文件夹
  • ${file} :当前打开的文件
  • ${relativeFile}:相对于workspaceRoot的相对路径
  • ${fileBasenameNoExtension}:当前文件的文件名,不带后缀,也即launch
  • ${fileBasename}: 当前打开文件的文件名
  • ${fileDirname}: 所在的文件夹,是绝对路径
  • ${fileDirname}:文件所在的文件夹路径
  • ${lineNumber}:当前文件光标所在的行号
  • ${fileExtname}:当前打开文件的拓展名,如.json
  • ${cwd}: 启动时任务运行程序的当前工作目录
  • ${workspaceFolder}:表示当前workspace文件夹路径
  • ${workspaceRootFolderName}:表示workspace的文件夹名
  • ${env:PATH}:系统中的环境变量

调试操作视频

调试配置项说明

request:请求配置类型,可以为launch(启动)或attach(附加)
 
下面是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,指定跳过单步调试的代码
  • trace : 启用诊断输出
 
以下是特定于类型 launch(启动)的配置属性:
  • program: 指定调试入口文件地址
  • args : []String 传递给程序的参数,可在process.argv拿到
  • cwd :指定程序启动调试的目录 ,当vscode启动目录不是项目根目录,并且调试npm script时非常有用
  • runtimeExecutable: 设置运行时可执行文件路径,默认是node可以是其他的执行程序,如npm、nodemon
  • runtimeArgs: 传递给运行时可执行文件的参数,例如:
  • runtimeVersion: 设置运行时可执行程序的版本,如果使用nvm,可以切换node.js版本
  • env: 添加额外的环境变量
  • envFile: 文件加载环境变量
  • console: 配置终端可以是外部终端或者内部集成终端,默认值internalConsole
  • autoAttachChildProcesses: 跟踪调试对象的所有子过程,并自动附加到在调试模式下启动的子过程

© i7eo 2017 - 2024