跳到主要内容

Debug

一文搞懂前端各种调试方法的原理

打开 protocol monitor 面板

protocol monitor 是一项实验性质

在 devtools settings 中启用,然后调出控制面板搜索 protocol monitor

Chrome Devtools 调试 Node

Node 官方调试指南

devtools 其实是一个页面,可以在 Chrome 打开 devtools://devtools/bundled/inspector.html 查看,源码地址

Node 进程必须阻塞

第一步

node --inspect server.js
sh

第二步 在 chrome 打开 chrome://inspect/#devices

chrome-inspect

启动 node inspect 的时候,chrome 会自动捕获

或者访问 http://127.0.0.1:9229/json 获取 devtoolsFrontendUrl,然后新建 tab 页面打开


可以在 Console 面板中看到 log 打印,也可以在 Sources 面板对代码进行断点调试

调试 Cli 程序

可以修改 node_modules/.bin 下对应的 cli 程序,例如修改 vite 的可执行文件:

#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
exec node --inspect "$basedir/../vite/bin/vite.js" "$@"
sh

CDP

Chrome DevTools Protocol

CDP

当点击小三角对 set 进行展开时,devtools 通过请求获取 set 的信息,然后进行展示


该协议把操作划分为不同的域(domain),比如 DOM、Debugger、Network、Console 和 Timeline 等,可以理解为 DevTools 中的不同功能模块。

每个域(domain)定义了它所支持的 command 和它所产生的 event。每个 command 包含 request 和 response 两部分,request 部分指定所要进行的操作以及操作说要的参数,response 部分表明操作状态,成功或失败。

Chrome DevTools Frontend

深入理解 Chrome DevTools

Chrome DevTools Frontend 运行原理浅析

运行 Chrome DevTools Frontend 项目

每一个 DevTools 都是一个单独的进程,防止页面阻塞导致 devtools 不可用

Chrome DevTools Backend

Node Inspector 解析

Node Inspector 就是一种 DevTools 后端,架起前端与 V8 沟通的桥梁