Debug
node的调试方式
打日志
通过使用console.log
方法,此方式相当便捷,当相对于难点的bug还是比较无力。
node自带的debugger调试器
官方文档debugger
基于TCP的协议,通过commod界面可以对nodejs脚本进行调试
1 | # 旧版的node |
运行后终端出现commod界面
调试
- cont, c - 继续执行
- next, n - 下一步
- step, s - 跳进函数
- out, o - 跳出函数
- pause - 暂停运行代码(类似开发者工具中的暂停按钮
设置断点
- 可以通过文本打添加
debugger
- setBreakpoint(), sb() - 在当前行设置断点
- setBreakpoint(line), sb(line) - 在指定行设置断点
- setBreakpoint(‘fn()’), sb(…) - 在函数体的第一条语句设置断点
- setBreakpoint(‘script.js’, 1), sb(…) - 在 script.js 的第 1 行设置断点
- clearBreakpoint(‘script.js’, 1), cb(…) - 清除 script.js 第 1 行的断点
执行
- run - 运行脚本(调试器开始时自动运行)
- restart - 重新启动脚本(每次设置完断点后可以运行此命令方便点)
- kill - 终止脚本
node inspect
和node --inspect
的区别?node inspect
启动是command界面操作debug方式,而node --inspect
可以上 Chrome 的开发者工具附加到 Node.js 实例以用于调试和性能分析,这是由 V8 的检查器集成来的。
中规中矩,还是在编辑器上设置断点调试才是最方便的,不过多学中node debug方式有益无害。
node-inspector
这是社区提供的优秀的debugging工具。
Node Inspector 是 Node.js 应用程序的调试器接口,通过它可以使用 Blink(Chrome 浏览器内核)开发工具来进行 debugging。
1 | # 安装 |
node-debug 命令将在默认浏览器中加载 Node Inspector。
node inspector仅使用于chrome和opera,若是其它浏览器需要在打开inspect页面
node自带新的方式
V8检查器集成允许Chrome DevTools和IDE等工具调试和配置Node.js实例。 这些工具通过tcp端口附加到Node.js实例,并使用Chrome Debugging Protocol调试协议进行通信。
可以是用此方式代替node-inspector
工具的使用。
1 | node --inspect **.js |
与--inspect-brk
对比--inspect-brk
会在应用代码的第一行断开,方便从头开始调试
要求:
- Node.js 6.3+
- Chrome 55+
- Enable a new way of Node.js debugging in Chrome
- 在chrome输入
chrome://flags/#enable-devtools-experiments
- 开启
Developer Tools experiments
- 重启Chrome
- 打开Chrome的DevTools->Setting->Experiments 选项(在重启之后它开始可见)
- 按6次’SHIFT’以显示隐藏的实验功能
- 选中 “Node debugging”
- 打开/关闭 DevTools
最新版的chrome已经没有Node debugging,默认启动
use
运行node --inspect **.js
终端输出
打开chrome,输入chrome://inspect/
,如下选择你对应的inspect
调试
IDE
使用IDE工具上自带的debug功能进行调试。
推荐使用vscode
也可以使用其它的编辑器webstorm
等进行debug。