VSC调试器未附加到RPi

时间:2020-10-24 21:09:15

标签: node.js macos visual-studio-code raspberry-pi remote-debugging

我正在尝试在Macbook上设置VSC,以在Raspberry Pi上远程调试Node.js。 节点正在Pi上与Inspector(--inspect-brk)一起运行,并且似乎存在某些连接,但是.js文件没有打开,编辑器也没有跳到第一行。 我遵循了以下指示:https://github.com/BretStateham/pinodevscode 我已经搜索了3个晚上,但没有成功。为了进行检查,如果远程调试通常可以正常进行,我已经设置了一个远程调试配置,该配置附加到了Macbook上的nodejs(这就像一个超级按钮)。当我尝试使用RPi进行完全相同的操作(因此我基本上在配置中放置了不同的IP地址和RemoteRoot)时,它不再起作用。

这是我到目前为止在Pi设置中所做的事情:

  • 遵循https://github.com/BretStateham/pinodevscode
  • 中的说明
  • 我的samba共享称为DEV,映射到/ home / user,我的代码位于子代码MYCODE中
  • 我可以在RPi的终端上通过SSH运行脚本
  • 我首先尝试使用默认端口9229,后来又移至其他端口,在某处类似帖子中提出了建议,但没有成功
  • 我可以启动node -inspect-brk:192.168.178.42:9229 app.js,它报告检查器正在侦听该端口,并且当我从Mac扫描时,我可以看到该端口处于打开状态
  • 我已经基于VSC中的模板设置了启动配置(请参见下文)
  • 运行配置时,状态栏变为橙色,表示已建立连接,但未打开.js文件(因为它是在配置中附加到本地脚本的),并且没有任何反应(还附有Pi GPIO没有执行任何操作,因此脚本似乎正在等待调试器附加)
  • “调试器”按钮(“移入”,“进入”,“移出”)保持灰色
  • 我当时在想,根目录路径的同步可能出了一些问题(在过去使用Eclipse时有时会有些棘手),但是我检查了好几次:两个都是本地文件路径通过安装的Samba共享共享Pi,Pi上文件的远程路径指向相同的文件。
  • 我已在配置中打开“跟踪”。日志显示与远程系统的成功连接,但我无法真正弄清楚出了什么问题
  • 我在本地(工作)设置的日志文件和远程(失败)设置的日志文件之间进行了区分(请参见下文)。除了路径,IP,会话ID和时间戳之外,在本地设置中开始实际调试通信之前只有很少的差异
  • 我尝试使用从本地到远程系统的SSH隧道,而不是暴露RPi上的检查器端口(如检查器文档中所建议),但是情况完全相同

我在launch.json中的配置:

            "address": "192.168.178.42",
            "localRoot": "${workspaceFolder}",
            "name": "Attach to Remote",
            "trace": true,
            "port": 9229,
            "remoteRoot": "/home/user/MYCODE",
            "request": "attach",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "type": "pwa-node"
        },

远程设置的Runtime.launch标签。 (端口包含在URL中)

{
    "tag": "runtime.launch",
    "timestamp": 1603657311615,
    "message": "Discovered target URL from /json/list",
    "metadata": {
        "url": "ws://192.168.178.42:9229/c403f26a-422c-4a79-aa59-30b108cc0b51",
        "fixed": "ws://192.168.178.42:9229/c403f26a-422c-4a79-aa59-30b108cc0b51"
    },
    "level": 0
}

本地设置的Runtime.launch标签。 (端口包含在URL中)

{
    "tag": "runtime.launch",
    "timestamp": 1603655650439,
    "message": "Discovered target URL from /json/list",
    "metadata": {
        "url": "ws://localhost/94b1ced4-4eb9-4ca6-a710-c175393f6220",
        "fixed": "ws://localhost:9229/94b1ced4-4eb9-4ca6-a710-c175393f6220"
    },
    "level": 0
}

可能是问题吗?

1 个答案:

答案 0 :(得分:0)

最后找出潜在的根本原因和解决方案(如果有人遇到类似问题,我会在此处发布):

  • 除了上面的区别之外,两个日志文件的差异还有另一个细微的区别:本地(工作)副本报告的节点版本为12,而另一个在相同位置没有报告
  • 基于这一观察,我决定仔细检查节点安装: 事实证明,当我在Raspberry上安装了节点10并使用nodejs -v验证了正确的安装时,bash的系统版本节点8仍使用默认别名node
  • 更改后,我可以按预期启动调试会话
  • Nodejs 8的文档已经指出,使用--inspect-brk进行远程调试应该可以,但是显然,由于某些原因,它不再适用于我的设置。
  • 通过使用nvm重新安装节点8,我再次确认了节点版本是根本原因
  • 由于节点8仍然不受支持,这可能没问题-不幸的是,我使用的发行版仍将其作为系统默认值。
相关问题