VSC 调试器未附加到 RPi 上的 node.js
VSC Debugger does not attach to node.js on RPi
我正在尝试在 Mac 本书上设置 VSC,以便在 Raspberry Pi 上远程调试 nodejs。
Node是树莓派上的运行 Inspector (--inspect-brk
) 好像有什么联系,但是.js文件没有打开,编辑器也没有跳到第一行。
我遵循了这条指令:https://github.com/BretStateham/pinodevscode
我用谷歌搜索了 3 个晚上都没有成功。为了检查远程调试是否正常工作,我在 Mac 的书上设置了一个附加到 nodejs 的远程调试配置(这很有效)。当我尝试用 RPi 做完全相同的事情时(所以我基本上在配置中放置了不同的 IP 地址和 RemoteRoot)它不再工作。
这是我目前在 Pi 设置中所做的:
- 已按照 https://github.com/BretStateham/pinodevscode
中的说明进行操作
- 我的 samba 共享名为 DEV,映射到 /home/user,我的代码位于子文件夹 MYCODE
- 我可以在 RPi 的终端上通过 SSH 运行 我的脚本
- 我首先尝试使用默认端口 9229,然后根据类似 post 某处的建议移动到其他端口,但没有成功
- 我可以启动
node -inspect-brk:192.168.178.42:9229 app.js
,当我从 Mac 扫描时,它报告检查器正在侦听端口并且我可以看到端口打开
- 我已经根据 VSC 中的模板设置了启动配置(见下文)
- 当我运行配置时,状态栏变为橙色,表示已连接,但.js文件未打开(因为它在附加到本地脚本的配置中)并且没有任何反应(连接到 Pi GPIO 的按钮也没有做任何事情,所以脚本似乎在等待调试器连接)
- 调试器按钮(Step Over、Step into、Step out)保持灰色
- 我在想,根路径的同步可能有问题(这有时很棘手,当我过去使用 Eclipse 时),但我检查了几次:文件的本地路径在 Pi 上通过挂载的 Samba 共享和 Pi 上文件的远程路径指向相同的文件。
- 我在配置中打开了“trace”。日志显示成功连接到远程系统,但我真的搞不懂,哪里出了问题
- 我对本地(工作)设置的日志文件和远程(失败)设置的日志文件进行了比较(见下文)。除了路径、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
}
会不会是这个问题?
终于找到了潜在的根本原因和解决方案(我post在这里,以防其他人有类似的问题):
- 除了上述差异之外,两个日志文件的差异还有另一个细微差别:本地(工作)副本报告节点版本 12,而另一个在同一位置没有任何报告
- 基于那个观察,我决定 double-check 我的节点安装:
事实证明,虽然我在 Raspberry 上安装了节点 10 并使用
nodejs -v
验证了正确的安装,但 bash 仍然在默认别名 node
下具有系统版本节点 8。
- 更改后,我可以按预期启动调试会话
- Nodejs 8 的文档已经指出,使用
--inspect-brk
进行远程调试应该可以,但显然,出于某种原因,它不再适用于我的设置。
- 我 double-confirmed 节点版本是 re-installing 使用 nvm 的节点 8 的根本原因,这又带来了失败
- 由于节点 8 无论如何都不受支持,这可能没问题 - 不幸的是,我使用的发行版仍然将其作为系统默认值。
我正在尝试在 Mac 本书上设置 VSC,以便在 Raspberry Pi 上远程调试 nodejs。
Node是树莓派上的运行 Inspector (--inspect-brk
) 好像有什么联系,但是.js文件没有打开,编辑器也没有跳到第一行。
我遵循了这条指令:https://github.com/BretStateham/pinodevscode
我用谷歌搜索了 3 个晚上都没有成功。为了检查远程调试是否正常工作,我在 Mac 的书上设置了一个附加到 nodejs 的远程调试配置(这很有效)。当我尝试用 RPi 做完全相同的事情时(所以我基本上在配置中放置了不同的 IP 地址和 RemoteRoot)它不再工作。
这是我目前在 Pi 设置中所做的:
- 已按照 https://github.com/BretStateham/pinodevscode 中的说明进行操作
- 我的 samba 共享名为 DEV,映射到 /home/user,我的代码位于子文件夹 MYCODE
- 我可以在 RPi 的终端上通过 SSH 运行 我的脚本
- 我首先尝试使用默认端口 9229,然后根据类似 post 某处的建议移动到其他端口,但没有成功
- 我可以启动
node -inspect-brk:192.168.178.42:9229 app.js
,当我从 Mac 扫描时,它报告检查器正在侦听端口并且我可以看到端口打开
- 我已经根据 VSC 中的模板设置了启动配置(见下文)
- 当我运行配置时,状态栏变为橙色,表示已连接,但.js文件未打开(因为它在附加到本地脚本的配置中)并且没有任何反应(连接到 Pi GPIO 的按钮也没有做任何事情,所以脚本似乎在等待调试器连接)
- 调试器按钮(Step Over、Step into、Step out)保持灰色
- 我在想,根路径的同步可能有问题(这有时很棘手,当我过去使用 Eclipse 时),但我检查了几次:文件的本地路径在 Pi 上通过挂载的 Samba 共享和 Pi 上文件的远程路径指向相同的文件。
- 我在配置中打开了“trace”。日志显示成功连接到远程系统,但我真的搞不懂,哪里出了问题
- 我对本地(工作)设置的日志文件和远程(失败)设置的日志文件进行了比较(见下文)。除了路径、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
}
会不会是这个问题?
终于找到了潜在的根本原因和解决方案(我post在这里,以防其他人有类似的问题):
- 除了上述差异之外,两个日志文件的差异还有另一个细微差别:本地(工作)副本报告节点版本 12,而另一个在同一位置没有任何报告
- 基于那个观察,我决定 double-check 我的节点安装:
事实证明,虽然我在 Raspberry 上安装了节点 10 并使用
nodejs -v
验证了正确的安装,但 bash 仍然在默认别名node
下具有系统版本节点 8。 - 更改后,我可以按预期启动调试会话
- Nodejs 8 的文档已经指出,使用
--inspect-brk
进行远程调试应该可以,但显然,出于某种原因,它不再适用于我的设置。 - 我 double-confirmed 节点版本是 re-installing 使用 nvm 的节点 8 的根本原因,这又带来了失败
- 由于节点 8 无论如何都不受支持,这可能没问题 - 不幸的是,我使用的发行版仍然将其作为系统默认值。