Node.js 对多个节点进程使用节点检查器

Node.js 对多个节点进程使用节点检查器,node.js,node-inspector,Node.js,Node Inspector,我开始使用节点检查器调试一些节点应用程序。但是,有一件事我不知道该怎么做,即一旦节点检查器连接到一个节点应用程序,如何将其分离并连接到在同一个框上运行的另一个节点应用程序 如何同时调试多个进程?更新: 如果你是在2019年读到这篇文章,下面的答案已经过时了。您可能希望查看当前的文档或遵循gtzilla的回答: 首先,使用不同的调试端口启动节点程序,如下所示: $ node script1.js --debug==5858 $ node script2.js --debug==5859 然后启

我开始使用节点检查器调试一些节点应用程序。但是,有一件事我不知道该怎么做,即一旦节点检查器连接到一个节点应用程序,如何将其分离并连接到在同一个框上运行的另一个节点应用程序

如何同时调试多个进程?

更新: 如果你是在2019年读到这篇文章,下面的答案已经过时了。您可能希望查看当前的文档或遵循gtzilla的回答:

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

$ node script1.js --debug==5858
$ node script2.js --debug==5859
然后启动节点检查器

$ node-inspector &
并在两个选项卡中使用打开web控制台

  • http://localhost:8080/debug?port=5858
  • http://localhost:8080/debug?port=5859
  • 附加调试器 按端口或进程id。对于端口,请为每个进程使用不同的端口。在命令行上:

    node --inspect 8085 some_script_1.js
    node --inspect 8086 some_script_2.js
    node --inspect 9012 some_script_3.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>
    
    节点检查-p
    
    在Linux和Mac OS上,使用
    ps-A | grep node
    查找节点进程ID。流程启动后,还可以通过向节点流程发送信号来连接检查器
    SIGUSR1

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

    对于Chrome inspector协议,只有一个:节点--inspect。。。此项目试图通过根据新协议重新实现节点调试来提供缺少的第二个选项

    附加调试器的其他方法

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

    类似但独立的项目 值得注意的是,有一个类似的项目,现在已弃用,名为,它与2018年10月测试的节点v10.11.0分开,如前所述,您可以使用

    node --inspect=7000 --inspect-brk app1.js
    
    当然,您只需要为每个节点服务器指定不同的端口

    node --inspect=7001 --inspect-brk app2.js
    

    如果您使用Chrome,那么您也可以直接使用devtools和url,如:

    devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/0cc79945-8386-4082-aabb-328341bfc953
    
    *其中
    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
    
    使用url

    devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:7778/d4e8d8ce-abe9-46c6-89b1-ad0616bdf237
    

    为什么它是==以及它在任何节点文档中的什么地方这么说(并不是说它没有这么说,我只是想知道我在哪里错过了那一课)