有没有办法让 chrome-devtools (--inspect) 自动脱离已结束的进程?

Is there a way to get chrome-devtools (--inspect) to automatically detach from a process that has ended?

过程,原样:

  1. 使用 --debug --inspect 启动代码:

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

  2. 打开提供了 url 的开发者工具,例如:

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

  3. 做一些调试。

  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

编辑:我开始使用 Node Inspector Manager(Chrome 扩展名),发现整个过程进展顺利。

我没有那个问题,chrome-devtools 向我显示一条消息,当我 Ctrl-C 节点进程时,调试连接已关闭。

您 运行 使用什么系统?也许这是在较新的 Node 或 Chrome 版本中修复的问题?或者,也许您的 Node 应用程序中有一些东西阻止了套接字的正常关闭。您可以尝试使用简单的脚本吗?

这里是 jcollum(用户 835611 应该得到答案,因为他们向我举报):

我有两个进程终止信号的监听器:

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 的开发工具看到关机。我不知道那会如何工作,但这就是我观察到的。注释掉 process.exit 没有任何改变。多么奇怪,似乎在 SIGTERM / INT 事件上有一个侦听器会阻止 Chrome 的开发工具看到进程已经退出。从未见过事件侦听器的副作用。