node-debug

Debug

node的调试方式

打日志

通过使用console.log方法,此方式相当便捷,当相对于难点的bug还是比较无力。

node自带的debugger调试器

官方文档debugger

基于TCP的协议,通过commod界面可以对nodejs脚本进行调试

1
2
3
4
# 旧版的node
node debug **.js
# 最新的node
node inspector **.js

运行后终端出现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 inspectnode --inspect的区别?
node inspect启动是command界面操作debug方式,而node --inspect可以上 Chrome 的开发者工具附加到 Node.js 实例以用于调试和性能分析,这是由 V8 的检查器集成来的。

中规中矩,还是在编辑器上设置断点调试才是最方便的,不过多学中node debug方式有益无害。

node-inspector

这是社区提供的优秀的debugging工具。
Node Inspector 是 Node.js 应用程序的调试器接口,通过它可以使用 Blink(Chrome 浏览器内核)开发工具来进行 debugging。

1
2
3
4
# 安装
npm install -g node-inspector
# 启动
node-debug **.js

node-debug 命令将在默认浏览器中加载 Node Inspector。

node inspector仅使用于chrome和opera,若是其它浏览器需要在打开inspect页面

node自带新的方式

官方文档command inspect参数选项

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。