15

我开始使用 Node Inspector 来调试我的一些 Node 应用程序。但是,我不确定该怎么做的一件事是,一旦将 Node-inspector 附加到一个 Node 应用程序,如何将其分离并附加到在同一个盒子上运行的另一个 Node 应用程序?

如何同时调试多个进程?

4

4 回答 4

17

更新: 如果您在 2019 年阅读此内容,则以下答案已过时。您可能想查看当前文档或遵循 gtzilla 答案: https ://nodejs.org/en/docs/guides/debugging-getting-started/

首先,使用不同的调试端口启动您的节点程序,如下所示:

$ node script1.js --debug==5858
$ node script2.js --debug==5859

然后开始node-inspector

$ node-inspector &

并在两个选项卡中打开 Web 控制台

  1. http://localhost:8080/debug?port=5858
  2. http://localhost:8080/debug?port=5859
于 2012-10-19T08:55:16.720 回答
7

如前所述https://stackoverflow.com/a/18911247/1301197您可以指定一个端口

node --inspect=7000 --inspect-brk app1.js

然后当然你只需为每个节点服务器指定一个不同的端口

node --inspect=7001 --inspect-brk app2.js
于 2019-01-18T14:51:27.087 回答
3

附加调试器

通过端口或进程 ID。对于端口,为每个进程使用不同的端口。在命令行上:

node --inspect 8085 some_script_1.js
node --inspect 8086 some_script_2.js
node --inspect 9012 some_script_3.js

在单独的终端窗口中,您可以使用node inspect <host>:<port>. 例如附加到some_script_2.js端口8086

node inspect 127.0.0.1:8086

附加到不同的进程是改变端口的问题,例如9012你会运行

node inspect 127.0.0.1:9012

如果您没有在单独的已知端口上启动节点,您还可以使用该-p标志直接附加到现有进程

node inspect -p <node_script_process_id>

在 Linux 和 Mac OS 上用于ps -A | grep node查找节点进程 ID。启动进程后,您还可以通过向节点进程发送信号来附加检查器SIGUSR1 参考

node-inspect程序()与核心节点分开。虽然它与 nodejs 捆绑在一起。节点检查重新实现节点调试以解决限制

对于 Chrome 检查器协议,只有一个: node --inspect ...该项目试图通过针对新协议重新实现节点调试来提供缺少的第二个选项。

调试器 API 文档

附加调试器的其他方法

https://nodejs.org/en/docs/guides/debugging-getting-started/

您可以在 Chrome 中查看与调试器的交互。Connections只需在专用 NodeJS DevTools 窗口的选项卡下添加其他连接。

用于 DevTools 连接的 Chrome 窗口

类似但独立的项目

值得注意的是,有一个类似的项目,现在已弃用,称为node-inspector,它与node-inspectTested October, 2018 with node v10.11.0 分开

于 2018-10-20T18:26:40.630 回答
1

如果您使用Chrome,那么您也可以直接使用带有 url 的devtools ,例如:

devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/0cc79945-8386-4082-aabb-328341bfc953

*where 9229/0cc79945-8386-4082-aabb-328341bfc953- 部分可以取自节点的输出


例如,运行第一个应用程序

$ node --inspect-brk=7777 app.js
Debugger listening on ws://127.0.0.1:7777/2df21a01-44ff-40c4-b6ff-1f839f81f9d6

所以结果 url 将是:

devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:7777/2df21a01-44ff-40c4-b6ff-1f839f81f9d6

然后运行第二个应用程序实例:

$ node --inspect-brk=7778 app.js
Debugger listening on ws://127.0.0.1:7778/d4e8d8ce-abe9-46c6-89b1-ad0616bdf237

并打开它:

devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:7778/d4e8d8ce-abe9-46c6-89b1-ad0616bdf237
于 2020-07-25T12:57:02.303 回答