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

标签 node.js debugging v8

流程如下:

  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. 启动失败:无法打开 devtools 套接字:地址已在使用中

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

Node 检查器在这方面做得更好。我有什么遗漏的吗?某些标志将使 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 扩展),发现整个过程要好得多。

最佳答案

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

您在什么系统上运行?也许这是在较新的 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 的开发工具看到进程已退出。从未见过事件监听器产生这样的副作用。

关于node.js - 有没有办法让 chrome-devtools (--inspect) 自动从已结束的进程中分离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39898914/

相关文章:

node.js - 使 Node.js 退出,无论 native 模块异步调用如何挂起

javascript - 在 v8 和 Node.js 中保存函数回调

c++ - 在windows下用v8链接什么

javascript - 如何使用 C++ 插件中内置的 node.js 模块

css - Handlebars NodeJS/Koa 脚本/Src 引用

node.js - 在 SailsJS 中设计更薄的 Controller

sql - 如何重复 SQL 插入直到 pg-promise 成功?

c++ - "Shallow"Visual Studio Debug模式下STL容器的显示?

javascript - 为什么我会收到此 JS 错误?

JavaScript 调试