Chrome浏览器调试nodejs(ChromeDevTools 55+支持)
1、运行脚本
1)、web服务应用:
node –inspect app.js 或者 node –inspect-brk app.js
2)、非web服务应用:
node –inspect-brk=9229 app.js
PS:-brk指定第一行设置断点,一开始就是暂停状态, =9229指定调试端口为 9229,这是调试工具默认的通信端口
这是调试命令的一些参数(来自官网的):
Command-line options
The following table lists the impact of various runtime flags on debugging:Flag Meaning
–inspect
Enable inspector agent
Listen on default address and port (127.0.0.1:9229)
–inspect=[host:port]
Enable inspector agent
Bind to address or hostname host (default: 127.0.0.1)
Listen on port port (default: 9229)
–inspect-brk
Enable inspector agent
Listen on default address and port (127.0.0.1:9229)
Break before user code starts
–inspect-brk=[host:port]
Enable inspector agent
Bind to address or hostname host (default: 127.0.0.1)
Listen on port port (default: 9229)
Break before user code starts
node inspectscript.js
Spawn child process to run user’s script under –inspect flag; and use main process to run CLI debugger.
node inspect –port=xxxx script.js
Spawn child process to run user’s script under –inspect flag; and use main process to run CLI debugger.
Listen on port port (default: 9229)
–inspect-brk参数后面也能指定端口,未指定就使用默认的9229端口。
2、chrome浏览器里打开:chrome://inspect/#devices,会显示如下页面(Target要等一会才能出现)。
3、点击上图红框中的inspect按钮,即可进入程序调试界
调试工具主要有四个面板:Console:控制台、Sources:源码、Memory:内存、Profiler:性能。
主要讲Sources面板,调试时面板从左到右可以看到CallStack、Breakpoints、Scope、Watch等折叠项。Scope双击Local的变量值可进入编辑状态。
4、除了chrome://inspect/#devices之外,输入 http://127.0.0.1:9292 然后打开开发者工具,点击node图标,也可以进入调试程序。
5、忘记写 –inspect 怎么办?(Linux系统)
打开调试工具的前提是,启动 Node 脚本时就加上–inspect参数。如果忘了这个参数,还能不能调试呢?
回答是可以的。首先,正常启动脚本。
1)、正常启动脚本:node app.js
2)、在另一个命令行窗口,查找上面脚本的进程号。
1 | $ ps ax | grep app.js |
3)、上面命令中,app.js的进程号是30464。接着运行下面命令:
1 | node -e'process._debugProcess(30464)' |
4)、上面命令会建立进程 30464 与调试工具的连接,然后就可以打开调试工具了。
5)、还有一种方法,就是向脚本进程发送 SIGUSR1 信号,也可以建立调试连接。(windows上不可用)
1 | $ kill -SIGUSR1 30464 |
6、怎么启用远程调试方案
如果需要远程调试生产代码,建议不要让调试器监听公共IP地址,建议使用ssh隧道来调试。怎么启用远程调试方案:
1)、远程机器上启动进程:node –inspect app.js
2)、在要启动调试客户端连接的本地计算机上,可以设置ssh隧道:
1 | ssh -L 9221:localhost:9229 user@remote.example.com |