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

时间:2016-10-06 14:38:42

标签: node.js debugging v8

这个过程原样:

  1. 使用--debug --inspect:

    启动代码

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

  2. 打开带有网址的devtools,例如:

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

  3. 做一些调试。

  4. 意识到你有一个bug,杀死进程(Ctrl-C)并进行代码更改。

  5. 重新启动。

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

  7. 意识到您必须手动刷新chrome-devtools页面才能让它意识到该过程不再可用。

  8. 节点检查员对此更好。有什么我想念的吗?一些标志会使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扩展程序),发现整个过程变得更好。

1 个答案:

答案 0 :(得分:2)

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

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

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的开发工具看不到关机。我不知道这是怎么回事,但这就是我所观察到的。评论process.exit没有改变。多么奇怪,似乎在SIGTERM / INT事件上有一个监听器会阻止Chrome的开发工具看到该进程已退出。从未见过来自事件监听器的副作用。