Heim >Backend-Entwicklung >Golang >Wie erstelle ich eine Debug-Konfiguration für eine bestimmte .go-Datei in VSCode?

Wie erstelle ich eine Debug-Konfiguration für eine bestimmte .go-Datei in VSCode?

王林
王林nach vorne
2024-02-10 18:42:081085Durchsuche

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

Bei der Verwendung von VSCode für die Go-Sprachentwicklung müssen wir häufig debuggen, um Probleme zu lösen. Für bestimmte .go-Dateien müssen wir jedoch möglicherweise benutzerdefinierte Debug-Konfigurationen erstellen. Wie erstellt man also eine Debug-Konfiguration für eine bestimmte .go-Datei in VSCode? In diesem Artikel stellt Ihnen der PHP-Editor Youzi die spezifischen Schritte und Vorsichtsmaßnahmen im Detail vor, damit Sie dieses Ziel problemlos erreichen können. Ganz gleich, ob Sie Anfänger oder erfahrener Entwickler sind, dieser Artikel bietet Ihnen wertvolle Hinweise. Lasst uns beginnen!

Frageninhalt

Derzeit müssen Sie zum Debuggen zunächst die Datei .go im Editor fokussieren und dann die Taste F5 drücken, um das Debuggen zu starten.

Ich möchte F5 drücken können, um mit dem Debuggen zu beginnen, ohne mich zuerst auf main.go im Editor konzentrieren zu müssen.

Dies ist die von VSCode generierte Standardkonfiguration. Sie müssen darauf achten, bevor F5 .goDatei:

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

Versuchen Sie, programcwd anzugeben, um es zu erfüllen:

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

Aber das funktioniert nicht, es wird beschwert, dass die Funktion nicht gefunden wurde:

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)

Die eigentliche Funktion befindet sich in einer anderen program 同一目录下的另一个 .go Datei im selben Verzeichnis wie Programm.

In beiden Dateien ist oben package main angegeben.

Wie kann ich in diesem Fall eine Debug-Konfiguration für eine bestimmte .go 文件创建调试配置?

解决方法

program Datei erstellen?

Lösung${fileDirname}当前打开文件的文件夹路径。默认 Launch Package 模板使用 ${fileDirname} 而不是 ${file} (由 Launch file

Geben Sie das Attribut program als Verzeichnis an:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch Package",
      "type": "go",
      "request": "launch",
      "mode": "auto",
      "program": "${workspaceFolder}/cmd/sym_dump"
    }
  ]
}
Es werden Vorlagen verwendet) aus einem bestimmten Grund. dlv debug

Werfen wir einen Blick auf die

Dokumentepackage的信息并不多。让我们转向 go run Zuerst für :

Über

s program 属性指定为 ${workspaceFolder}/cmd/sym_dump/main.go,则表示该包包含单个文件 (main.go)。但事实是该包包含另一个定义 dumpTypesdumpSourceFilesdoc

:

Wenn wir das Attribut program als ${workspaceFolder}/cmd/sym_dump/main.go angeben, bedeutet dies, dass das Paket eine einzelne Datei enthält (). Tatsache ist jedoch, dass das Paket eine weitere Datei enthält, die dumpTypes, dumpSourceFiles usw. definiert. Aus diesem Grund schlägt die Erstellung des Programms fehl. cwd

Übrigens, denn „wenn cwd weggelassen oder leer ist, wird der Programmordner als Arbeitsverzeichnis verwendet“ (siehe 🎜Launch.json-Eigenschaften 🎜), müssen Sie die 🎜-Eigenschaft nicht festlegen. 🎜

Das obige ist der detaillierte Inhalt vonWie erstelle ich eine Debug-Konfiguration für eine bestimmte .go-Datei in VSCode?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen