2020-05-12 23:14:55
--inspect标志通过Chrome DevTools提供动态、交互式的调试视角,帮助开发者直观观察Node.js事件循环的执行流程、异步任务调度及性能瓶颈,具体作用如下:
1. 连接Chrome DevTools,提供动态调试界面控制台输出调试地址(如Debugger listening on ws://127.0.0.1:9229/your-unique-id)。
在Chrome浏览器访问chrome://inspect,点击“Remote Target”下的“inspect”链接,打开DevTools窗口。

Call Stack:显示当前同步函数的调用链。
Async Stack:展开后展示异步任务的原始调用链(如setTimeout或Promise.then的源头),帮助追踪问题根源。
在DevTools中切换到“Performance”面板,点击录制按钮。
操作Node.js应用模拟负载,停止录制后生成报告。
长条代表阻塞:同步代码执行时间过长、频繁垃圾回收(GC)或微任务堆积。
关键指标:
同步阻塞:深调用栈且长时间无任务切换。
GC频繁:标记为“GC”的区域占用过多时间。
微任务过多:紧密相连的短条(如Promise.then或process.nextTick)。

示例代码:console.log('Start');setTimeout(() => { console.log('setTimeout 1'); }, 0);Promise.resolve().then(() => { console.log('Promise 1'); });console.log('End');
执行顺序:
Start → End(同步代码)。
Promise 1(微任务队列优先执行)。
setTimeout 1(宏任务开始处理)。
断点观察:通过Async Stack追溯异步任务的原始调用链。
CPU密集型计算:复杂数学运算、同步数据处理。
同步I/O:使用fs.readFileSync等同步方法。
无限循环/死锁:逻辑错误导致CPU占用100%。
