首頁  >  文章  >  後端開發  >  如何在 VSCode 中為特定 .go 檔案建立調試配置?

如何在 VSCode 中為特定 .go 檔案建立調試配置?

王林
王林轉載
2024-02-10 18:42:081046瀏覽

如何在 VSCode 中为特定 .go 文件创建调试配置?

在使用 VSCode 進行 Go 語言開發時,我們經常需要進行偵錯以解決問題。然而,對於特定的 .go 文件,我們可能需要建立自訂的偵錯配置。那麼,如何在 VSCode 中為特定 .go 檔案建立偵錯配置呢?在本文中,php小編柚子將為您詳細介紹特定步驟和注意事項,幫助您輕鬆實現這一目標。無論您是初學者還是有經驗的開發者,本文都將為您提供有價值的指導。讓我們開始吧!

問題內容

目前,必須先在編輯器中聚焦.go檔案進行偵錯,然後按F5鍵開始偵錯。

我想要的是能夠按 F5 開始調試,但不必先在編輯器中關注 main.go

這是VSCode產生的庫存配置,F5之前必須注意.go檔:

{
        "name": "Launch Package",
        "type": "go",
        "request": "launch",
        "mode": "auto",
        "program": "${fileDirname}",
    }

嘗試指定 programcwd 以使其滿意:

{
        "name": "Launch Package",
        "type": "go",
        "request": "launch",
        "mode": "auto",
        "program": "${workspaceFolder}/cmd/sym_dump/main.go",
        "cwd": "${workspaceFolder}/cmd/sym_dump",
    }

但這不起作用,它抱怨未找到函數:

Starting: C:\Users\aybe\go\bin\dlv.exe dap --listen=127.0.0.1:49541 from C:\GitHub\psx_mnd_sym/cmd/sym_dump
DAP server listening at: 127.0.0.1:49541
Build Error: go build -o C:\GitHub\psx_mnd_sym\cmd\sym_dump\__debug_bin2780105186.exe -gcflags all=-N -l .\main.go
# command-line-arguments
.\main.go:340:13: undefined: dumpTypes
.\main.go:344:14: undefined: dumpSourceFiles
.\main.go:348:14: undefined: dumpDecls
.\main.go:357:13: undefined: dumpTypes
.\main.go:365:13: undefined: dumpIDAScripts
.\main.go:380:13: undefined: dumpTypes (exit status 1)

實際函數位於與 program 同一目錄下的另一個 .go 檔案中。

這兩個檔案都在其頂部指定了 package main

在這種情況下,如何為特定的 .go 檔案建立偵錯配置?

解決方法

program 屬性指定為目錄:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch Package",
      "type": "go",
      "request": "launch",
      "mode": "auto",
      "program": "${workspaceFolder}/cmd/sym_dump"
    }
  ]
}

${fileDirname}目前開啟檔案的資料夾路徑。預設Launch Package 範本使用${fileDirname} 而不是${file} (由Launch file 範本使用)是有原因的。

讓我們看看文件 首先對 dlv debug

關於package的資訊並不多。讓我們轉向 go rundoc

如果我們將program 屬性指定為${workspaceFolder}/cmd/sym_dump/main.go,則表示該套件包含單一檔案(main.go)。但事實是該套件包含另一個定義 dumpTypesdumpSourceFiles 等的檔案。這就是它無法建立程式的原因。

順便說一句,因為「如果cwd 被省略或為空,則程式資料夾將用作工作目錄」(請參閱 Launch.json 屬性),因此您不需要設定cwd 屬性。

以上是如何在 VSCode 中為特定 .go 檔案建立調試配置?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除