我老是调侃好多 nodejs 开发都不会多进程调试,这其中就包括了我。
直到有一天,我不得不使用它来解决一些问题,做为一个懒人,我喜欢用简单的办法,因此这多是最简单的 Nodejs 调试方法,
话很少说进入正题javascript
console.log()
单进程的调试,若是场景不复杂、比较好预判,能够直接打印到控制台html
// 添加参数 --debug-brk 能够在第一行断点 // node --inspect --debug-brk index.js node --inspect index.js
nodejs 在 v6.3.0
版本以后支持了 node --inspect index.js
这种调试方式,能够打开一个 chrome 页面,用前端熟悉的方式进行断点
调试。前端
Debugger listening on port 5863. Warning: This is an experimental feature and could change at any time. To start debugging, open the following URL in Chrome: chrome-devtools://devtools/remote/serve_file/@60cd6e859b9f557d2312f5bf532f6aec5f284980/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:5863/7fd57fb3-86fa-4519-8621-39147428b15d
像这样,会有一个 chrome-devtools
协议的地址,复制到 chrome 中就能够开启调试java
假设我有一个这样的多进程 Nodejs 服务node
if (cluster.isMaster) { for (var i = 0; i < cpuCount; i++) { cluster.fork(); } const agentWorker = cluster.fork({ 'AGENT_WORKER': true }); }
注意对比,经过cluster.setupMaster
能够设置 master 进程 fork work 进程时的参数配置chrome
if (cluster.isMaster) { if (debug) { // 在 fork 进程以前添加调试参数,--debug-brk 指代码在执行第一行时进行断点 cluster.setupMaster({ execArgv: ['--inspect', '--debug-brk'] }); } for (var i = 0; i < cpuCount; i++) { cluster.fork(); } const agentWorker = cluster.fork({ 'AGENT_WORKER': true }); }
像单进程同样,不过每一个进程都会有一个调试 url,但咱们依然能够直接在 chrome 里面进行多进程调试chrome-devtools
若是你还不会,快去试试吧url