有没有办法让chrome-devtools(–inspect)自动从已经结束的进程中分离出来?

这个过程就像这样:

  1. 用–debug –inspect开始代码:

    "debug": "node --max-old-space-size=8192 --debug=5567 --inspect dist/index.js",

  2. 打开devtools提供的url,如下所示:

    chrome-devtools://devtools/remote/serve_file/@62cd277117e6f8ec53e31b1be58290a6f7ab42ef/inspector.html?experiments=true&v8only=true&ws=localhost:9229/node

  3. 做一些debugging。

  4. 意识到你有一个错误,杀死进程(Ctrl-C)和改变代码。

  5. 重新开始。

  6. 开始失败: Unable to open devtools socket: address already in use

  7. 意识到您必须手动刷新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的开发工具看到这个进程已经退出。 从来没有见过像事件监听者那样的副作用。