网易首页 > 网易号 > 正文 申请入驻

超有用的 VsCode 各场景高级调试技巧

0
分享至

以下内容来自公众号逆锋起笔,关注每日干货及时送达

VsCode自从诞生以来,以其各自优异的特性迅速走红。尤其是对于前端开发小伙伴来说,几乎成为必不可少的开发工具。所以,熟练掌握VsCode的各自使用技巧与调试技巧会让你的日常开发工作效率倍增。本文将会以大量图文的方式,从下面几个方面详细介绍VsCode的各种技巧:

  • 第一部分主要介绍VsCode的基本技巧,比如常用快捷键、辅助标尺等。熟悉此部分的可以直接跳过。

  • 第二部分主要各种断点(比如日志断点、内联断点、表达式断点等等)、数据面板等等

  • 第三部分主要讲解各种项目的调试实战,比如Node程序、TS程序、Vue程序、Electron程序、Html等的调试实战

  • 最后一部分将会讲解其他有用的技巧,比如代码片段、重构、Emmet等等

基本技巧 快速启动

VsCode安装后,会自动写入环境变量,终端输入code即可唤起VsCode应用程序。

常用快捷键

  • ctrl + p快速搜索文件并跳转,添加:可以跳转到指定行


image.png

  • ctrl + shift + p根据您当前的上下文访问所有可用命令。



  • ctrl + shift + c在外部打开终端并定位到当前项目路径



  • ctrl + 按键1左边的符号显示隐藏终端面板



  • Ctrl+B切换侧边栏



  • Ctrl+\快速拆分文件编辑



  • alt + 单机左键添加多处光标



  • alt + shift + 单击左键同一列所有位置添加光标



  • alt + shift + 鼠标选择选择相同开始和结束的区域



image.png
  • alt + 上键或下键将当前行或者选中的区域上移/下移一行

垂直标尺

在配置文件中添加如下配置,可以增加字符数标尺辅助线

"editor.rulers": [ 40, 80, 100]
复制代码

下面以在VsCode中快速调试一个Node项目为例,演示断点的基本使用。后文会继续结束各种高级断点。

  • 创建一个基本的node项目为Nodejs

  • 打开左侧调试面板,选择你要调试的node项目名称,添加调试配置


image.png
  • 选择调试的项目类型为Node.js


image.png
  • 打开生成的.vscode/launch.json文件,指定程序入口文件

program字段用于指定你的程序入口文件,${workspaceFolder}表示当前项目根路径

在程序中添加断点,只需要点击左侧的边栏即可添加断点


image.png

  • F5开始调试,成功调试会有浮窗操作栏


image.png

浮窗的操作按钮功能依次为:

  • 继续(F5)、

  • 调试下一步(F10)、

  • 单步跳入(F11)、

  • 单步跳出(Shift F11)、

  • 重新调试(Ctrl + Shift + F5)、

  • 结束调试(Shift + F5)

日志断点

日志断点是普通断点的一种变体,区别在于不会中断调试,而是可以把信息记录到控制台。日志断点对于调试无法暂停或停止的服务时特别有用。步骤如下:

  • 添加日志断点的步骤


image.png
  • 输入要日志断点的信息,点击回车添加完成

可以使用{}使用变量,比如在此处添加日志断点,b的值为${b}

日志断点添加成功后会有是一个菱形图标


image.png

  • F5运行查看调试结果


image.png
表达式条件断点

条件断点是表达式结果为true时才会进行断点,步骤如下:

  • 在代码行左侧右击,也可以添加断点,此处选择添加条件断点


image.png
  • 填写表达式,按回车键


image.png
  • 添加成功的小图标如下


image.png
  • F5调试,条件成立所以进行了断点


image.png
命中计数断点

只有该行代码命中了指定次数,才会进行断点。步骤如下:

  • 选择条件断点,切换为命中次数选项,填写命中次数


image.png
  • 填写成功如下图所示


image.png
  • F5调试,如图所示,index为9时才中断


image.png
内联断点

仅当执行到达与内联断点关联的列时,才会命中内联断点。这在调试在一行中包含多个语句的缩小代码时特别有用。比如for循环,短路运算符等一行代码包含多个表达式时会特别有用。步骤如下:

  • 在指定位置按Shift + F9


image.png
  • 调试之后,每次运行到该内联处的代码都会中断


image.png
补充知识点:数据面板介绍
  • 数据面板可以查看所有变量


image.png
  • 在变量上点击右键,可以设置变量值、复制变量值等操作


image.png
  • 聚焦于数据面板时,可以通过键入值来搜索过滤。


image.pngimage.png
补充知识点:监听面板介绍

可以将变量添加到监听面板,实时观察变量的变化。

  • 在变量面板通过右键选择“添加到监视”将变量添加到监听面板


image.png
  • 也可以直接在监听面板选择添加按钮进行变量添加


image.png
  • 添加变量后就可以实时监听变量的变化


image.png
补充知识点:调试服务器时打开一个URI

开发 Web 程序通常需要在 Web 浏览器中打开特定 URL,以便在调试器中访问服务器代码。VS Code 有一个内置功能“ serverReadyAction ”来自动化这个任务。

  • 一段简单的server代码

var express = require( 'express');
var app = express();

app.get( '/', function(req, res) {
res.send( 'Hello World!');
});

app.listen( 3000, function() {
console.log( 'Example app listening on port 3000!');
});
复制代码

  • 配置launch.json,以支持打开URI

{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/app.js",

"serverReadyAction": {
"pattern": "listening on port ([0-9]+)",
"uriFormat": "http://localhost:%s",
"action": "openExternally"
}
}
复制代码

pattern是设置匹配的程度端口号,端口号放在小括号内,即作为一个正则的捕获组使用。uriFormat映射为URI,其中%s使用pattern中的第一个捕获组替换。最后使用该URI作为外部程序打开的URI。

  • F5调试,会自动打开浏览器,且会在下图所示处中断,当继续执行后,浏览器才能看到输出了server的内容


image.png
终局:各场景调试实战 调试NodeJS项目

关于NodeJs项目的调试方法,已经在上述的 断点的基本使用 [1]部分做了介绍,可以网上滚动翻阅。

调试Typescript项目


  • 调试TS项目前,先创建一个TS项目

    # 终端运行
    tsc --init
    复制代码

    VS Code 内置了对 Ts 调试的支持。为了支持调试 Ts 与正在执行的 Js 代码相结合,VS Code 依赖于调试器的source map在 Ts 源代码和正在运行的 Js 之间进行映射,所以需要需要开启sourceMap选项。


    "sourceMap": true,
    "outDir": "./out"
    复制代码
    const num: number = 123;
    console.log(num);

    function fn(arg: string): void {
    console.log('fn', arg);
    }

    fn("Hello");
    复制代码

    • 新建index.ts文件,写一个基本的ts代码

    • 打开tsconfig.json文件,开启sourceMap选项和指定编译后输出的路径

    • 先初始化一个ts程序,生成默认的tsconfig.json文件


  • 手动编译调试TS

    在上述的ts基本项目中:

    F5或者运行 -> 启动调试,此时可以看到可以正常debug调试

  • 在index.ts中随意添加一个断点

  • 此时可以看到生成了out文件夹,里面包含一个index.js和一个index.js.map文件

  • 终端执行ts的编译命令tsc


  • 通过构建任务构建调试TS

    注意,如果你使用的是其他终端(比如cmder)的话,有可能会生成不了,如下图所示,使用默认的powershell即可:

    调试的话和上述步骤一样,在有了编译后的文件后,按F5即可

  • 选择tsc构建选项,此时可以看到自动生成了编译文件

  • Ctrl+Shift+B或选择终端 -> 运行生成任务,此时会弹出一个下拉菜单


  • 监视改变并实时编译

    如下图所示,会实时编译

  • Ctrl + Shift + B选择监视选项,可以实时监视文件内容发生变化,重新编译

  • 补充知识点:tasks配置文件的创建方式
    • 方法1:点击终端 -> 配置任务 -> 选择任务可以生成对应的tasks.json配置


    image.pngimage.png
    • 方法2:点击终端 -> 运行生成任务 -> 点击设置图标也可以生成对应的tasks.json配置


    image.pngimage.png
    补充知识点:每次调试时重新编译
    • 按上述的操作已经生成了task.json配置文件

    {
    "version": "2.0.0",
    "tasks": [
    {
    "type": "typescript",
    "tsconfig": "tsconfig.json",
    "problemMatcher": [
    "$tsc"
    ],
    "group": "build",
    "label": "tsc: 构建 - tsconfig.json"
    }
    ]
    }
    复制代码

    • 点击运行 -> 添加配置 -> 选择nodejs


    image.png
    • 在生成的launch.json文件中,添加preLaunchTask字段,值是tasks.jsonlabel值,一定要相同,注意大小写。该字段的作用是在执行命令前先执行改task任务。


    image.png

    注意,如果编译后的js文件不在相应的位置,通过图中的outFiles字段可以指定ts编译后的js路径。

    • index.ts文件中按F5启动调试,可以看到调试前已经生成了编译文件,而后就可以正常调试了。


    image.png
    补充知识点:VsCode的TS版本说明

    • vscode本身内置了对ts的支持



    • vscode内置的ts版本(即工作区版本),仅仅用于IntelliSense(代码提示),工作区ts版本与用于编译的ts版本无任何关系。添加微信studyingJava,免费领取你需要的任何学习资料


    修改工作区ts版本的方法:

    • 在状态栏选择typescript的图标,选择版本切换


    image.png
    • 选择你需要的版本即可


    image.pngimage.png
    调试html项目

    学会了上述ts的调试后,我们尝试调试html文件,并且html文件中引入ts文件:

    • 创建html,引入ts编译后的js文件

    html>
    Document title>
    head>

    Hello h3>

    特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

    Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

    相关推荐
    热点推荐
    警惕!公知正在悄悄换掉我们的价值观:三件事正在瓦解社会根基

    警惕!公知正在悄悄换掉我们的价值观:三件事正在瓦解社会根基

    云景侃记
    2026-03-26 14:56:36
    不要担心明天的走势,天塌不下来,国际原油暗盘已经跌下来了!

    不要担心明天的走势,天塌不下来,国际原油暗盘已经跌下来了!

    有范又有料
    2026-03-29 16:15:46
    海南解放后,邓华希望40军把缴获的装备留下,韩先楚:我不同意!

    海南解放后,邓华希望40军把缴获的装备留下,韩先楚:我不同意!

    墨说古今
    2026-03-15 23:35:07
    《疾速追杀》外传上线流媒体:2.5亿美元票房惨案

    《疾速追杀》外传上线流媒体:2.5亿美元票房惨案

    野生运营
    2026-03-29 13:26:26
    石油市场现可疑抛售潮

    石油市场现可疑抛售潮

    新快报新闻
    2026-03-29 14:42:35
    张雪峰女儿亲自辟谣!父母恩爱没离婚,回应三个问题,口才很意外

    张雪峰女儿亲自辟谣!父母恩爱没离婚,回应三个问题,口才很意外

    标体
    2026-03-29 09:43:39
    案例:复旦博士姜文华判处死刑,女学生曝光其习惯,有一点很奇怪

    案例:复旦博士姜文华判处死刑,女学生曝光其习惯,有一点很奇怪

    清茶浅谈
    2025-01-18 15:14:28
    央视发文锐评《逐玉》,狠狠替张凌赫出了口恶气,刘宇宁全说对了

    央视发文锐评《逐玉》,狠狠替张凌赫出了口恶气,刘宇宁全说对了

    晓鰀爱八卦
    2026-03-27 15:24:35
    关东、关西、关中、关内、关外,到底指的是哪里?

    关东、关西、关中、关内、关外,到底指的是哪里?

    长风文史
    2026-03-28 09:18:06
    坦格西里遇袭身亡

    坦格西里遇袭身亡

    新浪财经
    2026-03-26 23:01:14
    春天,吃菠菜芹菜不如吃它,全身是宝,鲜嫩营养正当时,别不懂吃

    春天,吃菠菜芹菜不如吃它,全身是宝,鲜嫩营养正当时,别不懂吃

    秀厨娘
    2026-03-29 19:51:23
    郭麒麟白嫖网红外卖媛!

    郭麒麟白嫖网红外卖媛!

    八卦疯叔
    2026-03-28 09:58:03
    南京男子回家迫不及待抱住妻子,结果家中鹦鹉一开口,让他崩溃!

    南京男子回家迫不及待抱住妻子,结果家中鹦鹉一开口,让他崩溃!

    白云故事
    2025-03-14 19:05:07
    2026年交强险大调整!6月1日起执行,车主的春天来了

    2026年交强险大调整!6月1日起执行,车主的春天来了

    老特有话说
    2026-03-28 12:54:11
    强对流天气黄色预警:湖南江西贵州广西广东等部分地区有雷暴大风

    强对流天气黄色预警:湖南江西贵州广西广东等部分地区有雷暴大风

    北青网-北京青年报
    2026-03-29 20:14:03
    释永信“开光”真相大白,过程不堪入目,易中天也有牵扯

    释永信“开光”真相大白,过程不堪入目,易中天也有牵扯

    寻墨阁
    2026-03-25 11:39:10
    这五位短剧女主一脸“苦相”,还总爱演女神!网友:谁给的勇气?

    这五位短剧女主一脸“苦相”,还总爱演女神!网友:谁给的勇气?

    阿废冷眼观察所
    2026-03-28 11:55:44
    心源性猝死人数逐渐增多,医生建议:少吃鸡肉,多喝7样增强免疫

    心源性猝死人数逐渐增多,医生建议:少吃鸡肉,多喝7样增强免疫

    健身狂人
    2026-03-27 17:25:00
    1996年, 施瓦辛格在家中无事,和35岁200斤女佣发生不当关系

    1996年, 施瓦辛格在家中无事,和35岁200斤女佣发生不当关系

    南权先生
    2026-01-20 15:49:53
    《纽约时报》:他的离世,用生命给迷茫年轻人上了最后一课

    《纽约时报》:他的离世,用生命给迷茫年轻人上了最后一课

    芳华青年
    2026-03-29 10:24:11
    2026-03-29 21:32:49
    技术小生
    技术小生
    互联网技术与技术人的职业发展
    957文章数 515关注度
    往期回顾 全部

    科技要闻

    马斯克承认xAI"建错了",11位创始人均离职

    头条要闻

    中国警告美国:勿将"冲突战乱"引入亚太地区

    头条要闻

    中国警告美国:勿将"冲突战乱"引入亚太地区

    体育要闻

    绝杀卫冕冠军后,他单手指天把胜利献给父亲

    娱乐要闻

    张凌赫事件持续升级!官方点名怒批

    财经要闻

    Kimi、Minimax 们的算力荒

    汽车要闻

    岚图泰山X8配置曝光 四激光雷达/华为新一代座舱

    态度原创

    健康
    旅游
    本地
    艺术
    公开课

    干细胞抗衰4大误区,90%的人都中招

    旅游要闻

    “寻一份信物,遇一生姊妹” 用剧本游的方式打开“姊妹节”

    本地新闻

    在潍坊待了三天,没遇到一个“潍坊人”

    艺术要闻

    314米!温哥华第一座超高层摩天楼,像“海绵礁”

    公开课

    李玫瑾:为什么性格比能力更重要?

    无障碍浏览 进入关怀版