簡體   English   中英

VSC 調試器不會附加到 RPi 上的 node.js

[英]VSC Debugger does not attach to node.js on RPi

我正在嘗試在 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 Share叫DEV,映射到/home/user,我的代碼在子文件夾MYCODE
  • 我可以在 RPi 的終端上通過 SSH 運行我的腳本
  • 我首先嘗試使用默認端口 9229,稍后移至其他端口,遵循某處類似帖子的建議,但沒有成功
  • 我可以啟動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 上文件的遠程路徑指向相同的文件。
  • 我在配置中打開了“跟蹤”。 日志顯示成功連接到遠程系統,但我真的不知道出了什么問題
  • 我在本地(工作)設置的日志文件和遠程(失敗)設置的日志文件之間做了一個差異(見下文)。 除了路徑、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
}

這可能是問題嗎?

終於找出了一個潛在的根本原因和解決方案(我把它貼在這里,以防其他人有類似的問題):

  • 除了上面的區別,兩個日志文件的diff還有一個細微的區別:本地(工作)副本報告節點版本12,而另一個在同一位置沒有報告
  • 基於這一觀察,我決定仔細檢查我的節點安裝:結果證明,雖然我已經在 Raspberry 上安裝了節點 10 並使用nodejs -v驗證了正確的安裝,但 bash 在默認別名node
  • 更改后,我可以按預期啟動調試會話
  • Nodejs 8 的文檔已經指出,使用--inspect-brk遠程調試應該可以工作,但顯然,由於某種原因,我的設置不再適用。
  • 我通過使用 nvm 重新安裝節點 8 再次確認節點版本是根本原因,這又導致了故障
  • 由於節點 8 無論如何都不支持,這可能沒問題 - 不幸的是,我使用的發行版仍然將它作為系統默認值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM