使用Chrome DevTools单步调试node程序

安装最新的Node

要支持这项功能,需要node.js的版本在6.3.0以上。如果版本较低,将会提示不支持该功能。在Mac上你可以使用nvm来切换node的版本,具体请自行google。

运行node程序()

运行node程序时需要带上--inspect标记。比如可以这样运行:

 node --inspect index.js

如果需要在node程序的第一行就自动加断点,可以这样来执行:

 node --inspect --inspect-brk index.js

打开调试连接

本人node 版本8.11,执行之后就显示如下:

  文件所在目录 > node --inspect --inspect-brk index.js
 Debugger listening on ws://127.0.0.1:9229/e6965a0f-810d-48b3-a6e9-0ede62299cf4
For help see https://nodejs.org/en/docs/inspector
将webSocket URL复制到浏览器,然后F12打开开发者模式,点击绿色node.js图标打开DevTool工具即可进行调试


原理

开启检查器

注意: --inspect 选项和检查器协议都是实验性的, 它们将来可能会被更改.

如果运行程序时开启了 inspect 开关, Node.js进程会通过WebSocket监听那些由 检查器协议 定义的诊断命令, 默认情况下地址和端口是127.0.0.1:9229. 每个进程会被分配一个唯一的UUID(即通用唯一识别码, 此处的UUID形如: 0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e).

检查器客户端必须知道并指定地址, 端口和UUID以连接到WebSocket接口. 完整URL为 ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e, 当然, 实际的URL要取决于实际的地址, 端口和UUID.

检查器带有一个HTTP终端用于处理被调试程序的元数据, 包括WebSocket URL, UUID和Chrome DevTools URL(Chrome DevTools指Chrome浏览器的开发者工具, 因为是个专有名词, 就不单独翻译了). 想获取到元数据, 要先发送一个HTTP请求到 http://[host:port]/json/list, 会获取到一个形式如下的JSON对象; 然后用 webSocketDebuggerUrl 字段值作为URL直接连接检查器.

{
  "description": "node.js instance",
  "devtoolsFrontendUrl": "chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&
ws=127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e",
  "faviconUrl": "https://nodejs.org/static/favicon.ico",
  "id": "0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e",
  "title": "node",
  "type": "node",
  "url": "file://",
  "webSocketDebuggerUrl": "ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e"
}

对于一个在启动时没有使用 --inspect 的Node.js进程, 我们可以向它发送 SIGUSR1 信号使它开始监听调试信息(在Linux和OS X上可以这么做). 这种发送信号的方式, 在Node 7中会激活遗留的调试器API; 在Node 8及以后版本中会激活检查器API.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值