前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第六十五期:简述Chrome DevTool 调试Node 的基本原理

第六十五期:简述Chrome DevTool 调试Node 的基本原理

作者头像
terrence386
发布2022-07-15 10:40:14
1K0
发布2022-07-15 10:40:14
举报
文章被收录于专栏:JavaScript高级程序设计

Chrome调试工具调试Node

我们知道通过node 的 --inspect 参数可以对Node 程序进行调试。

代码语言:javascript
复制
node --inspect index.js

执行命令后,打开浏览器,并导航到 chrome://inspect界面,我们就可以对我们的Nodejs项目进行调试。

点击【Open dedicated DevTools for Node】Node专用调试工具,即可进行调试。

非常方便。

它是如何工作的?

我们其实并不需要知道Node调试工具的底层原理就可以使用这个工具。但是出于好奇,我们简单了解一下也好。

调试能力其实最终是由JavaScript的V8引擎提供的。当node 执行 --inspect标识时,V8侦听器会打开一个端口接收WebSocket链接。一旦链接建立完成,以JSON形式的数据包命令就会在侦听器和客户端之间来回发送。

【chrome-devtools://】是一个Chrome浏览器可以识别的特殊的协议。它可以加载调试工具的UI界面,但是调试工具是通过远程模式进行加载的(remote mode),这种模式通过chrome-devtools://URI 提供了一个websocket 端点。

websocket 链接允许侦听器和客户端之间进行双向通信,内部的侦听器的websocket服务完全有C语言进行编写,并且运行在单独的线程上,因此,当进程启动或暂停时,侦听器可以继续接收和发动命令。

为了达到控制级别,提供了Debug模式(暂停、步进、检查状态、VIEW CALLAST堆栈、LIVE编辑)V8操作贯穿于 C++的各种功能,可以控制FOW,并在适当的位置改变状态。

例如,假如我们设置断点,一旦遇到该行,则在C++级别的代码中,条件将匹配暂停事件循环(javascript线程的事件循环机制)的函数。然后,侦听器(Inspector)通过WebSocket连接向客户端发送一条消息,告诉客户端进程在特定行上暂停,客户端更新其状态。同样,如果用户选择单步执行某个函数,该命令将发送给侦听器(Inspector),侦听器(Inspector)可以简单地取消暂停并在适当的时间重新使用执行。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JavaScript高级程序设计 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 它是如何工作的?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档