node调试协议
引言
研究node调试协议(实际上是chrome调试协议)对设计和实现自己的node远程调试工具来说至关重要,它不仅被用在chrome的开发工具中,也可以用它来实现自己的web ide产品,比如调试node中运行的javascript代码。
协议的版本
chrome调试协议是调试客户端和调试目标进行调试交互的规范,该协议通过json格式的文档protocol.json给出。
目前协议稳定版本是1.2,针对不同的运行环境protocol.json分为两个不同的协议内容,一种是提供给chrome浏览器的,一种是提供给基于V8 javascript引擎的运行环境,如node。
通过https://chromedevtools.github.io/debugger-protocol-viewer/ 可以了解协议的相关信息。
目前,提供给浏览器的协议描述在:
https://chromedevtools.github.io/debugger-protocol-viewer/1-2/。
提供给基于V8运行环境的在:
https://chromedevtools.github.io/debugger-protocol-viewer/v8/。
为了调试node应用程序,所以我们比较关注后者。
node6.3.0发布了一个v8-inspector重大变更,支持–inspect启动标识,因此从该版本开始,可以基于chrome调试协议去调试node了。
查看node所支持的协议版本
通过如下命令启动node应用程序,如下所示:(app.js是你要运行的应用程序的入口程序)
node --inspect=9222 app.js
在浏览器中输入url:
http://127.0.0.1:9222/json/version
将得到类似如下返回内容:
node6.3
[ { "Browser": "node.js/v6.3.0", "Protocol-Version": "1.1", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/45.0.2446.0 Safari/537.36", "<