有没有办法让chrome-devtools(–inspect)自动从已经结束的进程中分离出来?
这个过程就像这样:
-
用–debug –inspect开始代码:
"debug": "node --max-old-space-size=8192 --debug=5567 --inspect dist/index.js",
-
打开devtools提供的url,如下所示:
chrome-devtools://devtools/remote/serve_file/@62cd277117e6f8ec53e31b1be58290a6f7ab42ef/inspector.html?experiments=true&v8only=true&ws=localhost:9229/node
-
做一些debugging。
-
意识到你有一个错误,杀死进程(Ctrl-C)和改变代码。
-
重新开始。
-
开始失败:
Unable to open devtools socket: address already in use
-
意识到您必须手动刷新
chrome-devtools
页面才能实现该过程不再可用。
节点检查员对此更好。 有什么我失踪? 一些会使chrome-devtools
自动从已停止的进程中分离的标志?
$ versions npm 3.10.3 node v6.7.0 OS Darwin 15.6.0 Darwin Kernel Version 15.6.0
编辑:我开始使用节点督察pipe理器 (Chrome扩展),发现这整个过程变得更好。
我没有这个问题,chrome-devtools向我显示了一个消息,即当我Ctrl-C
节点进程时,debugging连接已经closures。
你在哪个系统上运行? 也许这是在一个更新的节点或Chrome版本已被修复的东西? 或者,也许你的Node应用程序中有一些东西阻止了套接字的正确closures。 你可以尝试一个简单的脚本,而不是?
jcollum在这里(user835611应该得到答案的功劳,因为他们把我踢掉了):
我有两个听众的进程终止信号:
process.on('SIGINT', function() { logger.warn('SIGINT received. Shutting down.'); return process.exit(0); }); process.on('SIGTERM', function() { logger.warn('SIGTERM received. Shutting down.'); return process.exit(0); });
原来那些阻止chrome的开发工具看到closures。 我不知道如何工作,但这就是我所观察到的。 注释掉process.exit
没有改变。 奇怪的是,让SIGTERM / INT
事件监听者阻止Chrome的开发工具看到这个进程已经退出。 从来没有见过像事件监听者那样的副作用。