VSCode中怎么开启调试模式?三种方式浅析

本篇文章给大家介绍一下试模式的必要性,聊聊vscode中开启调试模式的三种方式,希望对大家有所帮助!

VSCode中怎么开启调试模式?三种方式浅析

在代码编写或者维护(修 bug )的过程中, 对于简单的值或者问题, 我们可以通过console来解决, 甚至有人认为console大法好, 是银弹, 能解决所有问题, 我认为并不是的. 对于想要理清楚代码的执行逻辑, 还有查看复杂类型(引用类型)的值时, 还是得使用到调试模式(debugger) 的。https://juejin.cn/post/7024890041948176398#heading-1

debuggerjs 中的一个语句, 运行到这一行, 如果程序是在调试模式下, 会断点, 就是会停在这一行, 那么我们就可以看到此时的上下文环境, 包括最重要的变量的值, 和调用堆栈. 然后还支持我们单步调试, 或者逐块调试.

平时在浏览器中调试的比较多, 在浏览器中, 只需要打开控制台, 开启了调试模式, 然后遇到debugger语句, 或者自定义的断点, 就会让程序停下来, 进入debug模式.

1.png

这篇文章主要是会讨论一下在vscode中开启调试模式的方法, 因为我准备写一个vscode插件(敬请期待哈), 调试vscode就在所难免了, 之前的简单调试也肯定满足不了我的需求了, 所以来了解一下vscode的调试模式.

这篇文章不会写调试的技巧, 只是会写一下, vscode怎样开启调试js. 这里是vscode官方文档

再论调试模式的必要性

如果只需要看一个简单的值, 那么完全可以使用这里是vscode, 因为开启调试模式的成本比较大.

在浏览器中, 因为对象是引用类型的并且浏览器不会直接将对象完成折叠开, 所以如果console之后修改了对象, 再到控制台去看, 得到的将是修改后的对象了

打印后并没有自动全部折叠开

2.png

去手动折叠开的时候, 浏览器再去读值, 已经变成了修改后的值

3.png

这种问题的出现, 是因为对象, 所以如果我们转字符串再打印就不会有这个问题, 但是, 不好看, 这里只是举个例子, 有些情况下还是需要用调试模式的.

console中开启调试模式

vscode中调试vscode,js代码, 有三种方式

ts终端里运行vscode时, 自动附加, node.

直接使用见3.1提供的vscode终端, debug

使用配置文件, 见3.2

1 Auto Attach(自动附加)

见3.3的终端里运行vscode时, 根据不同的选项, 自动判断是否启动node模式.

一共有 4 种选项, 切换选项的方式也有三种

1.1 切换选项的方式

不管通过哪种设置方式, 更换了设置方式之后, 最好重启一下debug以让它更好的生效

通过设置

4.png

5.png

通过修改配置文件

6.png

7.png

打开配置文件vscode文件之后

// 修改或添加{  "debug.javascript.autoAttachFilter": "onlyWithFlag"}

通过命令(推荐)

使用settings.json 调出命令(Ctrl + Shift + P或者修改了快捷键的自己找一下),

8.png

输入mac可以找到它, 选中后可以看到这四个选项, 然后再次选中选项切换到你想要的选项

9.png

1.2 各个选项的含义

官网的文档没有更新, 默认选项已经不是attach了, 改成smart

选项 含义

始终(always)总是以debug模式启动智能(smart)只有指定的文件, 才进入debug模式仅带标志(onlyWithFlag)带有--inspect或者inspect-brk 参数, 以debug模式启动禁用(disabled)永远不使用debug模式启动

disabled是通过智能(smart)这个配置项指定的是否开启debug.javascript.autoAttachSmartPattern模式的文件路径, 默认值是debug

如果启动了["${workspaceFolder}/**","!**/node_modules/**","**/$KNOWN_TOOLS$/**"]模式, 那么禁用(disabled)将也不会进入node --inspect模式, 只能通过下面的方式开启一个debug终端才能进入debug模式, 哎~ debug 也是个坑货, 不知道啥时间把默认方式改成了vscode, 所以我记得有一次我使用disabled没能进入node --inspect模式, 还挺奇怪的, 现在才明白怎么回事.

2 JavaScript Debug Terminal(debug 终端)

直接启动一个debug模式的终端, 在里面启动的debug都会进入node模式.

通过上面的方式(debug)控制的是Auto Attach中启动的所有终端, 这个只控制它启动的这一个终端.

10.png

会译·对照式翻译 会译·对照式翻译

会译是一款AI智能翻译浏览器插件,支持多语种对照式翻译

会译·对照式翻译 0 查看详情 会译·对照式翻译

3 Launch Configuration(启动配置)

这个才是重头戏, 我也是主要想了解这个

启动配置是以一种配置文件的方式去设置如何启动vscode模式的方式, 它提供了更加配置化去满足运行调试复杂应用

3.1 启动配置的属性

这个配置文件位于当前工作区目录下的debug, 可以手动创建一个, 或者通过.vscode/launch.json快捷创建一个

11.png

然后选择vscode就好了

12.png

必需属性

必需属性, 修改的比较多的应该是node了, 另两个在name中, 一般都不会修改.

属性名 含义 属性值示例

type调试器类型, 也可以认为是调试的语言node => pwa-node, chrome => pwa-chromerequest启动debug的模式的请求类型,只有两个值launch:启动, attach:附加name此个启动配置的名称, 用于用户自己区分自定义, 自己理解就行, 给你自己用的

request

我们常用的是 node , 所以这里只是讨论了 launch 的使用.

对于 launchlaunch 的区别, 可以看 B 站上这个大佬的视频, 讲解地很好. 程序员阿汤 => 介绍 launch.json

name

attach的含义是: 一个name中可以配置多个启动配置, 所以需要给每个启动配置起个名字, 用于区分

{  "version": "0.2.0",  "configurations": [    {      "name": "node调试",      "port": 9229,      "request": "attach",      "skipFiles": ["/**"],      "type": "pwa-node"    },    {      "type": "pwa-chrome",      "request": "attach",      "name": "chrome调试",      "url": "http://localhost:8080",      "webRoot": "${workspaceFolder}"    }  ]}

13.png

选中某一个, 然后可以使用快捷键launch.json, 快速启动, 或者点击运行图标

14.png

f5launch都支持的属性

属性 含义

outFiles指定Source maps文件所在路径resolveSourceMapLocations也是指定与Source maps相关的路径timeout附加的超时时间, 超时就放弃stopOnEntry项目启动起来, 立即debugger一下, 就是相当于在代码的第一行加了一个debuggerlocalRoot这个是用来远程调试用的, 我就先不了解它了…remoteRoot这个是用来远程调试用的, 我就先不了解它了…smartStep自动跳过没有映射到的源文件skipFiles指定单步跳过的文件, 就是debugger不跟进去看的源代码trace开启会将一些调试输出保存到vscode指定的文件中

skipFiles

(这个挺有用的, 有些代码不想跟进去看, 但是经常点快了, 就进去了…, 可以把这些文件排除掉, attach配置上这个, 可以跳过/**/*.js核心模块的代码.)

trace

开启node

15.png

trace支持的属性

属性 含义

program启动项目的入口文件地址(就是要执行的js的路径)args相当于命令行参数(下面有详解)cwd指定程序启动的路径(下面有详解)runtimeExecutable指定可执行程序的启动路径(下面有详解)runtimeArgs给可执行程序的参数(下面有详解)env指定环境变量(下面有详解)

args

launch :在命令行传递参数的方式, 在"args": ["aaa", "bbb"]中可以通过node拿到

16.png

cwd

process.argv, 配置这个路径, 在"cwd": "${workspaceFolder}/demo"中, 相当于指定了node的路径

17.png

runtimeExecutable

这个可以指定启动的程序名, 比如使用process.cwd()启动, 或者指定路径, 比如你有 nodemon 个版本的 3 想启动调试看看各个版本的差异, 就不需要切换全局的 node 版本, 只需要设置多个配置项就行啦. 这样很方便的.

{  "version": "0.2.0",  "configurations": [    {      "name": "v10 版本启动",      "program": "${workspaceFolder}/demo.js",      "request": "launch",      "type": "pwa-node",      "runtimeExecutable": "C:Program Filesnodejsv10node.js" // 这里是 v10 版本的node路径    },    {      "name": "v11 版本启动",      "program": "${workspaceFolder}/demo.js",      "request": "launch",      "type": "pwa-node",      "runtimeExecutable": "C:Program Filesnodejsv11node.js" // 这里是 v11 版本的node路径    },    {      "name": "v12 版本启动",      "program": "${workspaceFolder}/demo.js",      "request": "launch",      "type": "pwa-node",      "runtimeExecutable": "C:Program Filesnodejsv12node.js" // 这里是 v12 版本的node路径    }  ]}
runtimeArgs

这个里面写的参数会紧跟在可执行程序后面, 在node程序中, node会将它后面的第一个参数视为它要执行的文件的路径, 所以需要有所调整.

{  "version": "0.2.0",  "configurations": [    {      "name": "v10 版本启动",      "program": "${workspaceFolder}/demo.js", // 这个现在已经不是 node 的执行文件地址了, 它只是一个参数了      "request": "launch",      "type": "pwa-node",      "args": ["args1", "args2"],      "runtimeArgs": ["${workspaceFolder}/demo.js", "runtimeArgs2"] // 因为它紧跟在 可执行程序后面, 所以它的第一个参数需要设置为它要执行的文件的地址      // 如果它是 --experimental-modules 类型参数就没事了, 因为node会把它解析成参数, 这个参数的含义是 启动 es 模块支持. 接下来我会写一篇 js 的模块化的文章, 敬请期待哈    }  ]}// 启动的命令行是// C:Program Filesodejsode.exe E:ont-end/demo.js runtimeArgs2 .demo.js args1 args2

18.png

这个参数在弄成 node 启动项目的时候, 比较有用

env
{  "version": "0.2.0",  "configurations": [    {      "name": "v10 版本启动",      "program": "${workspaceFolder}/demo.js",      "request": "launch",      "type": "pwa-node",      "env": {        "NODE_ENV": "prod"      }    }  ]}

19.png

npm支持的属性

我们常用的是 attach 方式启动, 就先不了解 launch 的方式启动了.

总结

对于如何在attach中启动vscode模式, 应该是比较清楚的了

debug中, 一共有三种方式启动vscode调试, 分别是

自动附加(影响全局的终端), 如果对自己电脑性能有自信, 设置为debug. 命令行运行进入always模式.

强制开启(只影响这一个终端), 如果不方便配置开启全局的自动debug, 使用这种方式进入debug, 也是比较放便的, 就是重新开启这个debug终端之后, 需要debug到需要运行的cd文件目录, 比较麻烦. 命令行运行进入js模式.

配置开启(功能强大, 适合调试复杂应用),配置好debug后, .vscode/launch.json启动进入f5模式

// 比较完整一个 launch.json 配置{  // 使用 IntelliSense 了解相关属性。  // 悬停以查看现有属性的描述。  // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387  "version": "0.2.0",  "configurations": [    {      "name": "v10 版本启动", // 配置名称      "program": "${workspaceFolder}/demo.js", // 项目启动入口文件      "request": "launch", // `debug`模式的请求方式      "stopOnEntry": true, // 项目启动, 立即`debugger`一下      "type": "pwa-node", // 调试器类型      "env": {        // 环境变量        "NODE_ENV": "prod"      },      "args": ["aaaa"], // 启动命令时跟在 program 后的参数      "skipFiles": [        // 指定单步调试不进去的文件        "/**" // node 的核心库, 比如`require`      ],      "cwd": "${workspaceFolder}", // 指定可执行程序的启动路径, process.cwd(),      "runtimeExecutable": "nodemon", // 指定可执行程序名称, 或者路径, 在这里 type 为 pwa-node 默认值是 node      "runtimeArgs": ["--experimental-modules"] // 启动命令时, 跟在 runtimeExecutable 后的参数    }  ]}

最后

这里已经有三个坑了, debug,模块化, 调试技巧, 我目前更想先写一个vscode插件开发,敬请期待.

感觉这篇文章能改到你启发的, 希望给个点赞, 评论, 收藏, 关注…

更多编程相关知识,请访问:编程视频!!

以上就是VSCode中怎么开启调试模式?三种方式浅析的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/502350.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 20:56:12
下一篇 2025年11月8日 20:58:29

相关推荐

  • 使用 Mask 导入本地图片时,如何解决跨域问题?

    跨域疑难:如何解决 mask 引入本地图片产生的跨域问题? 在使用 mask 导入本地图片时,你可能会遇到令人沮丧的跨域错误。为什么会出现跨域问题呢?让我们深入了解一下: mask 框架假设你以 http(s) 协议加载你的 html 文件,而当使用 file:// 协议打开本地文件时,就会产生跨域…

    2025年12月24日
    200
  • 为什么在 React 组件中无法获得 Tailwind CSS 语法提示?

    为什么在 React 组件中无法获得 Tailwind CSS 语法提示? 你在 VSCode 中编写 HTML 文件时,可以正常获取 Tailwind CSS 语法提示。但当你尝试在 React 组件中编写 Tailwind CSS 时,这些提示却消失不见了。这是什么原因造成的? 解决方案 要解决…

    2025年12月24日
    000
  • 如何在 VSCode 中为 React 组件启用 Tailwind CSS 提示?

    在 vscode 中为 react 组件启用 tailwind css 提示 如果你在使用 vscode 编写 react 组件时,发现 tailwind css 提示无法正常显示,这里有一个解决方法: 安装 tailwind css intellisense 插件 这是实现代码提示的关键,确保你已…

    2025年12月24日
    200
  • Vue3 中如何将页面上的 PX 单位转换为 REM?

    vue3 下如何实现某个页面 px 自适应到 rem? 在 vue3 中,您可以在某个页面中使用 px 转 rem 的自适应功能,以免影响其他项目 ui 框架。以下是实现方法: 使用 jquery 获取页面宽度,并将其作为基准值。例如,使用 375 作为基准,您可以在页面 mounted 生命周期函…

    2025年12月24日
    000
  • 如何实现 Vue 3 项目中特定页面自适应,避免影响全局 UI 框架?

    自适应页面 px 到 rem 插件探索 在 vue 3 项目中,开发者有时需要让某个特定页面具有自适应大小,即根据不同分辨率自动调整 px 到 rem 的转换。然而,传统的 px-to-rem 插件可能会影响整个项目的 ui 框架。 为了解决这个问题,这里提供了一种利用 javascript 和 v…

    2025年12月24日
    000
  • Vue 3 页面如何实现 px to rem 自适应?

    如何在 vue 3 页面中实现 px to rem 自适应? 在 vue 项目中,有时需要让特定的页面进行 px to rem 自适应,以实现自动缩放。以下是一个可用的解决方案: 使用 javascript 获取页面宽度,并以 375px 作为基准值。例如: let appwidth = $(‘#a…

    2025年12月24日
    400
  • CSS 砌体 Catness

    css 就像技术中的其他东西一样 – 它总是在变化和发展。该领域正在进行的开发是 css 网格布局模块级别 3,也称为 css masonry 布局。 theo 制作了一段视频,介绍了它的开发方式以及苹果和谷歌就如何实施它进行的辩论。 所有这些让我很高兴尝试 css 砌体! webkit…

    好文分享 2025年12月24日
    000
  • 如何解决VSCode中折叠部分的代码复制问题?

    Vscode中折叠代码的复制方法 当Vscode中的代码过多时,可以将其折叠起来以方便查看和编辑。不过,有时用户可能会发现折叠后复制代码时只复制了显示的部分,而折叠部分没有被复制。以下是如何解决此问题的方法: 使用快捷键Ctrl+C直接复制 当代码折叠时,直接使用Ctrl+C快捷键复制即可复制所有代…

    2025年12月24日
    000
  • 如何复制折叠的代码?

    Visual Studio Code 中如何复制折叠的代码? Visual Studio Code (vscode) 中,当遇到过长的代码时,为了提高可读性和简洁性,开发人员会经常使用折叠功能将代码折叠起来。然而,在折叠代码后,直接按住 Ctrl + C 复制代码时,只会复制展开的部分,而折叠的部分…

    2025年12月24日
    000
  • 如何在 VSCode 复制折叠的代码?

    如何复制折叠的 VSCode 代码 使用 VSCode 时,代码过长可能会造成不便。在折叠代码后,发现无法正常复制折叠的部分,令人感到烦恼。本文将介绍一种解决方案,帮助你轻松复制折叠的 VSCode 代码。 问题:如何复制折叠起来的 VSCode 代码? 当你折叠代码后,直接选中复制只会复制未折叠的…

    2025年12月24日
    000
  • CSS 太棒了!

    我正在学习什么 css 赋予了页面活力。多年来,css 变得越来越强大,并且已经开始用于制作以前需要 javascript 的动画。本周我一直在研究它的一些更高级的属性。 媒体查询 媒体查询几乎已经成为新时代设备的必需品。随着智能手机的出现,通过手机消费媒体的人比任何其他设备都多。因此,网站必须在移…

    2025年12月24日
    000
  • 试验 Tailwind CSS:快速指南

    tailwind css 是一个实用性优先的 css 框架,因其灵活性和易用性而在 web 开发人员中广受欢迎。 tailwind css 在 npm 上的每周下载量超过 950 万次(2024 年 8 月 5 日),显然它是 web 开发社区的最爱。在这篇博文中,我们将探讨如何在不设置本地开发环境…

    2025年12月24日
    000
  • VSCode如何使用HTML插件_高效开发环境配置【技巧】

    VSCode中HTML开发需配置五项功能:一、启用内置HTML语言支持;二、配置Emmet实现快捷展开;三、安装Live Server插件实现自动刷新预览;四、启用Auto Rename Tag同步修改成对标签;五、配置Prettier实现HTML格式自动化。 如果您在VSCode中编写HTML文件…

    2025年12月23日
    000
  • 怎么在vscode中运行html_vscode运行html文件步骤【教程】

    使用Live Server插件可实现实时预览,安装后右键HTML文件选择Open with Live Server即可在浏览器中自动打开并实时刷新页面。 如果您在使用 VSCode 编辑 HTML 文件,但无法直接查看页面效果,可以通过多种方式快速预览和运行 HTML 文件。以下是具体的操作步骤: …

    2025年12月23日
    000
  • 怎么进入html5编辑_用VSCode/记事本打开.html文件即可进入HTML5编辑【进入】

    最直接编辑HTML5文件的方式是用文本编辑器打开.html文件:一、VSCode右键打开或拖拽加载;二、记事本右键打开并设UTF-8编码;三、VSCode命令面板快速搜索打开。 如果您希望对HTML5文件进行编辑,最直接的方式是使用文本编辑器打开已有的.html文件。以下是具体操作步骤: 一、使用V…

    2025年12月23日
    000
  • vscode设置html5环境_插件配置与代码片段设置【教程】

    若VS Code中HTML文件缺乏语法高亮、智能补全及HTML5结构快速生成,需安装Auto Close Tag、Auto Rename Tag、CSS class IntelliSense和HTML Boilerplate插件,启用Emmet并配置html关联与格式化设置。 如果您在 Visual…

    2025年12月23日
    000
  • 怎么在vscode运行html_vscode运行html步骤【指南】

    答案:在VSCode中运行HTML需安装Live Server扩展。1. 创建并保存HTML文件;2. 安装Ritwick Dey开发的Live Server插件;3. 右键选择“Open with Live Server”即可在浏览器中实时预览,修改后自动刷新。 在 VSCode 中运行 HTML…

    2025年12月23日
    000
  • vscode怎么编译运行html_vscode编译运行html步骤【指南】

    使用Live Server插件可实时预览HTML页面,安装后右键选择Open with Live Server即可在浏览器中查看并支持热重载。 如果您在使用 Visual Studio Code 编辑 HTML 文件,但无法查看页面效果,可能是因为缺少正确的运行环境或配置。以下是几种在 VSCode…

    2025年12月23日
    000
  • vscode怎么运行html代码框架_vscode运行html框架方法【教程】

    使用Live Server插件可快速预览HTML,安装后右键选择“Open with Live Server”即可在浏览器中实时查看页面效果。 如果您在使用 Visual Studio Code 编辑 HTML 文件,但无法直接查看页面效果,可以通过多种方式快速运行并预览 HTML 代码。以下是几种…

    2025年12月23日
    000
  • vscode运行html慢怎么办_解vscode运行html慢问题【技巧】

    使用Live Server插件启动本地服务器预览HTML,禁用非必要扩展以释放资源,优化大体积静态文件引入方式,清除浏览器缓存并切换至高性能浏览器,调整VSCode自动保存与文件监听设置,可显著提升加载速度。 如果您在使用VSCode运行HTML文件时发现加载或预览速度较慢,可能是由于插件配置、浏览…

    2025年12月23日
    000

发表回复

登录后才能评论
关注微信