如何在vscode中调试代码?

项目延期
• 阅读 1496

调试前端代码

1 在项目根目录下面创建./vscode/launch.json文件,内容如下

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch Chrome",
      "type": "chrome",
      "request": "launch",
      // 填写你本地启动项目的地址
      "url": "http://localhost:3000",
      "webRoot": "${workspaceFolder}/src",
      "sourceMapPathOverrides": {
        "webpack:///src/*": "${webRoot}/*"
      }
    }
  ]
}

2 启动你的本地项目
示例npm start

3 按f5启动调试
vscode会自动打开浏览器,然后跳转至上述配置中url指向的地址。

4 添加断点
vscode中找到需要添加断点的代码行,点击行号左侧添加断点。
如何在vscode中调试代码?

5 刷新浏览器,当运行到断点处,代码就会停住,然后你就可以开始调试你的代码了。
如何在vscode中调试代码?

调试前端代码(使用attch模式)

默认情况下,使用的是launch模式,也就是vscode会自动打开一个浏览器窗口进行调试,不过有时候这并不是我们想要的。我们可能已经运行了一个窗口,然后想对这个已存在的窗口进行调试,这种情况就可以使用attach模式。

步骤:
1 在项目根目录下面创建./vscode/launch.json文件,内容如下

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Attach to Chrome",
      "type": "chrome",
      "request": "attach",
      // 默认用9222,也可以用其他,只要保证和--remote-debugging-port设置的端口一致就行了(后面会涉及)
      "port": 9222,
      // 填写你本地启动项目的地址
      "url": "http://localhost:3000",
      "webRoot": "${workspaceFolder}/src"
    }
  ]
}

2 给chrome浏览器快捷方式的目标字段添加参数
参数为--remote-debugging-port=9222(关键步骤)

完整的值会像这样:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222
如何在vscode中调试代码?

3 启动你的本地项目
示例npm start

4 按f5启动调试
vscode会关联到已经打开的项目地址,也就是上述配置中url指向的地址。

注意:打开这个地址的chrome窗口,目标参数必须有remote-debugging-port=9222,否则会报如下错误:
如何在vscode中调试代码?

5 添加断点
vscode中找到需要添加断点的代码行,点击行号左侧添加断点。
如何在vscode中调试代码?

6 刷新浏览器,当运行到断点处,代码就会停住,然后你就可以开始调试你的代码了。
如何在vscode中调试代码?

program方式调试node代码

1 添加调试配置

// launch.json
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "debugging server.js",
      "type": "node",
      "request": "launch",
      // 指向你需要调试的文件,${workspaceFolder}为根目录
      "program": "${workspaceFolder}/server.js",
    }
  ]
}

2 在vscode中找到需要添加断点的代码行,点击行号左侧添加断点。

3 按f5启动调试
vscode会直接进入第2步的断点处。

调试webpack构建流程

直接按照package.jsonscripts的命令调试 比如下面的命令,相当于npm start,也就是对npm start启动的代码进行调试。

上下文

// package.json
{
  "scripts": {
    "start": "react-app-rewired start",
    "build": "react-app-rewired build",
    "test": "react-app-rewired test",
    "eject": "react-scripts eject"
  }
}

1 添加调试配置

// launch.json
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "debugging webpack",
      "type": "node",
      "request": "launch",
      "runtimeExecutable": "npm",
      // 对应到你想调试package.json中的scripts脚本
      // 比如想调试上面的start流程,就填start
      // npm start这个命令不用填run
      // 其他自定义的命令需要加run
      // 比如你的scripts中命令为npm run deploy,这里就要填["run", "deploy"]
      "runtimeArgs": ["start"],
    }
  ]
}

2 在vscode中找到需要添加断点的代码行,点击行号左侧添加断点。
这里需要进入node_modules中,找到你想要断点的包中,添加断点。

3 按f5启动调试
vscode会直接进入第2步的断点处。

注意事项

启动的地址一直在处于加载中,可能是地址被vscode调试工具劫持了,尝试重启一下vscode看能否解决。

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
4年前
vscode调试使用nodejs纯调试javascript
vscode调试使用nodejs纯调试javascript其实就是跟自己较劲,可以写个包含js的html进行调试,不用这么麻烦做单独调试!不过个人开发就是喜欢语言有各自的环境!在本地目录编写好js以后,按运行调试然后编辑器会自动生成.vscode目录,并且下面会生成launch.json文件,并弹出需要自己扩充修改{
Wesley13 Wesley13
4年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
4年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
4年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Stella981 Stella981
4年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
少湖说 少湖说
1年前
鸿蒙Flutter实战:08-如何调试代码
鸿蒙Flutter实战:如何调试代码1.环境搭建参考文章搭建好开发环境。IDE安装好DevEco和VsCode/AndroidStudio。2.配置如果是vscode,可以在.vscode/launch.json文件中,增加以下配置json"name":"