如何判断Node.js进程已附加调试器而非仅处于调试监听模式?
检测Node.js进程是否已附加调试器
可以直接用Node.js内置的inspector模块实现这个需求,代码如下:
const inspector = require('inspector'); function isDebuggerAttached() { try { const session = new inspector.Session(); session.connect(); session.disconnect(); return true; } catch (err) { return false; } }
说明:
- 当有调试器实际附加到进程时(比如Chrome DevTools、VS Code调试器已连接),
inspector.Session能成功连接,函数返回true - 如果只是用
--inspect/--inspect-brk启动进程但未连接任何调试工具,尝试连接会话会抛出错误,函数返回false,正好满足你区分“调试模式启动”和“已附加调试器”的需求
关于旧方案的问题:
之前社区里的一些方案(比如检查process.debugPort、解析命令行参数找--inspect)只能判断进程是否以调试模式启动,无法识别是否真的有调试器连接,而且部分方法在新版Node.js中已经不再适用。
内容的提问来源于stack exchange,提问作者flash
相关产品推荐
相关产品推荐

