Node.js调试大法 — v8_inspector
2017-05-21 11:46
741 查看
Node.js 调试基本原理
Node.js 提供了强大的Debugger模块,使用方式如下:
使用
debug模式时,Node.js 会启动
Debugger模块,然后通过监听默认 5858 端口将命令行的输入传送到内建调试模块以达到调试的目的。
同时支持
--debug和
--debug-brk参数。这两个参数只会启动
Debugger监听模式,不会进入命令行调试模式,而且前者会运行完所有代码,通常可用于事件调试,后者会在进入时中断,方便从头开始调试。
进入
Debugger监听模式后,可以通过这两种方式连接调试:
node debug <URI> # 通过 URI 连接调试,如 node debug localhost:5858 node debug -p <pid> # 通过 PID 链接调试
命令行调试几乎支持所有调试的功能:断点、单步、步入、步出、变量查看等等。详细说明可参见官方文档
所以无论是IDE 调试工具还是
node-inspector都是基于Node.js的
Debugger模块进行调试的。
Chrome DevTools与Node.js Debugger结合
Node.js命令行调试因为缺少调试界面,因此使用的人相对比较少。于是就诞生了
node-inspector。 它所做的就是让用户可以使用
DevTools UI去使用原生的
Debugger,使用起来也比较方便
安装
node-inspector
npm install -g node-inspector
开启
node-inspector服务
node-inspector # node-inspector & ### Running in background
debug模式启动程序
node --debug test.js # node --debug-brk test.js # Pause your script on the first line
然后就可以直接用浏览器打开
http://127.0.0.1:8080/?port=5858进行调试了。
Node.js原生
Debugger模块使用的是V8-Debug Protcol,而且
DevTools使用Chrome
Debugging Protcol。所以
node-inspector在其中起到了翻译和转达的作用。
v8_inspector
诞生
今年5月份,谷歌工程师ofrobots 提交了一个Add v8_inspector support的PR。同时在5月份的
DevTools Google I/O talk 有提到此功能。
就是说
v8_inspector可以让
DevTools直接连接
Node.js的
Debugger进行调试。
现如今,新版本的Chrome浏览器和新版本的
Node.js支持通过一个新的调试协议能互相直接通讯了,就不再需要
node-inspector了。
安装新版本
Node.js 6.3+可以从官网安装,目前给官网给到的最新版本是v6.7.0
Chrome 55+
最新版本的 Chrome 叫
Canary,安装这个版本时不用担心会覆盖老版本的Chrome,会生成另外一个图标。
启用inspect
调试模式
下载好Chrome Canary后,打开
chrome://flags/#enable-devtools-experiments
启用开发者工具实验性功能
重启Chrome
打开开发者工具 -> 设置 -> Experiments,按
SHIFT键6次,显示隐藏选项后勾选
Node debugging
使用
inspect调试
使用
--inspect参数就可以使用最新的调试功能:
在
Canary中打开链接即可调试。
使用中的问题
在用v6.7.0测试时发现一直在报错
Assertion '(inspector->http_parsing_state) == (nullptr)' failed.
发现很多人有出现过这个问题,参见这里
这是一个已经修复的bug,但是
v6.7.0中没有包含,解决方案就是安装
v7.x版本,两种安装方式:
下载源码安装
# Install windows-build-tools npm install --global --production windows-build-tools # Download source code git clone https://github.com/nodejs/node.git cd node git checkout remotes/origin/v7.x # Build # vcbuild nosign x64 # 64-bit build on windows vcbuild nosign
下载
896a
v7.0.0-nightly 安装包安装
使用新版本彻底解决了这个问题。
相关文章推荐
- NodeJS+Express+mongoose+Jade+bootstrap+jquery+inspector(调试工具)开发网站demo总结
- 用node-inspector调试Node.js(转自NOANYLOVE'S BLOG)
- 使用 node-inspector 调试 Node.js
- 使用node-inspector在线调试Node.js
- 使用node-inspector调试Node.js应用
- node.js调试使用node-inspector
- node.js 调试工具 node-inspector
- 使用 node-inspector 调试 Node.js
- 使用node-inspector对Node.js进行调试
- node.js及node-inspector的调试方法
- coffee在node.js的调试---inspector
- node.js 调试工具 node-inspector 简要说明
- node.js系列:(调试工具)node-inspector调试Node.js应用
- win7下,安装node-inspector调试Node.js
- 使用node-inspector调试Node.js应用
- 利用node-inspector 调试node.js程序
- 【ask】webstorm调试node单个js文件
- Web Inspector:关于在 Sublime Text 中调试Js的介绍
- 用Node-Inspector调试NodeJs程序
- 使用Eclipse调试Node.js代码