【问题标题】:VSC Debugger does not attach to node.js on RPiVSC 调试器不附加到 RPi 上的 node.js
【发布时间】:2021-02-07 13:58:50
【问题描述】:

我正在尝试在 Macbook 上设置 VSC 以在 Raspberry Pi 上远程调试 nodejs。 Node 在 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 中
  • 我可以通过 SSH 在 RPi 的终端上运行我的脚本
  • 我首先尝试使用默认端口 9229,后来移动到其他端口,遵循某处类似帖子的建议,但没有成功
  • 我可以启动node -inspect-brk:192.168.178.42:9229 app.js,它报告inspector 正在侦听端口,当我从Mac 扫描时,我可以看到端口打开
  • 我已经根据 VSC 中的模板设置了启动配置(见下文)
  • 当我运行配置时,状态栏变为橙色,表示已连接,但 .js 文件未打开(因为它在附加到本地脚本的配置中)并且没有任何反应(还有附加到Pi GPIO 没有做任何事情,所以脚本似乎在等待调试器附加)
  • 调试器按钮(Step Over、Step into、Step out)保持灰显状态
  • 我在想,根路径的同步可能有问题(这有时很棘手,当我过去使用 Eclipse 时),但我检查了几次: Pi 通过挂载的 Samba 共享和 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
}

这可能是问题吗?

【问题讨论】:

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


    【解决方案1】:

    终于找到了潜在的根本原因和解决方案(我把它贴在这里,以防其他人有类似的问题):

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

    【讨论】:

      猜你喜欢
      • 2022-09-25
      • 2021-11-27
      • 2018-08-15
      • 1970-01-01
      • 2016-01-27
      • 1970-01-01
      • 2016-10-30
      • 1970-01-01
      • 2013-11-20
      相关资源
      最近更新 更多