Nodejs调试方法
1. Node debug
Nodejs提供了一个内建调试器来帮助开发者调试应用程序。使用debug模式时,Node.js 会启动Debugger模块,然后通过监听默认 5858 端口将命令行的输入传送到内建调试模块以达到调试的目的。
同时支持--debug 和 --debug-brk参数。这两个参数只会启动Debugger监听模式,不会进入命令行调试模式,而且前者会运行完所有代码,通常可用于事件调试,后者会在进入时中断,方便从头开始调试。
运行:node debug [需要调试的js]
调试命令说明:
repl 打开js上下文即时求值环境,可查看变量
run 执行脚本,在第一行暂停
restart 重新执行脚本
cont, c 继续执行,直到遇到下一个断点
next, n 单步执行
step, s 单步执行并进入函数
out, o 从函数中步出
setBreakpoint(), sb() 当前行设置断点
setBreakpoint(‘f()’), sb(...) 在函数f的第一行设置断点
setBreakpoint(‘script.js’, 20), sb(...) 在 script.js 的第20行设置断点
clearBreakpoint, cb(...) 清除所有断点
backtrace, bt 显示当前的调用栈
list(5) 显示当前执行到的前后5行代码
watch(expr) 把表达式 expr 加入监视列表
unwatch(expr) 把表达式 expr 从监视列表移除
watchers 显示监视列表中所有的表达式和值
kill 终止当前执行的脚本
scripts 显示当前已加载的所有脚本
version 显示v8版本
2. Node inspector
node-inspector是基于Node.js的Debugger模块进行调试的,是通过websocket方式来转向debug输入输出的。因此,我们在调试前要先启动node-inspector来监听Nodejs的debug调试端口。
安装: npm install –g node-inspector
运行:node-inspector & 或 node-inspector --web-port=5100
//启动调试,默认8080端口或者指定端口node --debug-brk [需要调试的js] 或 node-debug [需要调试的js]
控制台会返回debugger listening on port 5858
, 现在打开浏览嚣,访问 http://localhost:8080/debug?p... ,这时候就会打开一个很像Chrome内置调试工具的界面,并且代码断点在第一行,下面就可以使用这个来调试了。
缺点:页面不能刷新,每次调试需要重新运行 “node-debug [需要调试的js]"
3. V8_inspector
现如今,新版本的Chrome浏览器和新版本的Node.js支持通过一个新的调试协议能互相直接通讯了,就不再需要node-inspector了。
环境:
- Node.js 6.3+
- chrome 55+
- 需下载 Chrome 浏览器 Canary 版 (Canary 版是专为开发者和早期用户设计的版本,可能会造成浏览器当机)
步骤:
- 下载Chrome浏览器Canary版,打开 chrome://flags/#enable-devtools-experiments (启用开发者工具实验性功能)
- 重启Chrome。
打开开发者工具 -> 设置 -> Experiments
,按SHIFT键6次,显示隐藏选项后勾选Node debugging - 在终端输入指令:
node –-inspect [需要调试的js]
。用Canary版浏览器打开终端输出的链接。
4. webstorm
安装webstorm,webstorm也是一个好软件,支持多平台。特别提醒ws是是一个商业收费软件,可以试用30天。
安装: webstorm编辑器
使用: 配置debug调试的配置信息(如下图)。再点击debug