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
模块进行调试的。
Node.js
命令行调试因为缺少调试界面,因此使用的人相对比较少。于是就诞生了node-inspector
。 它所做的就是让用户可以使用DevTools UI
去使用原生的Debugger
,使用起来也比较方便
node-inspectornpm 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
了。
inspect
调试模式Chrome Canary
后,打开chrome://flags/#enable-devtools-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
使用新版本彻底解决了这个问题。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。