无法启动 dlv dap

log*_*gan 4 go visual-studio-code vscode-settings

当我在 VSCode dlv dap 调试中启动时,我收到以下消息:

Couldn't start dlv dap:
Error:timed out while waiting for DAP server to start
Run Code Online (Sandbox Code Playgroud)

我已经有了项目的启动配置?

午餐.json:

{
"version": "0.2.0",
"configurations": [
    {
        "name": "Launch file",
        "type": "go",
        "request": "launch",
        "mode": "debug",
        "program": "${workspaceFolder}",
        "showLog": true,
        "env": {
            "GO111MODULE": "on"
        }
    }
]
}
Run Code Online (Sandbox Code Playgroud)

和 setting.json 是:

{
"folders": [
    {
        "path": "."
    }
],
"settings": {
    "go.useCodeSnippetsOnFunctionSuggestWithoutType": true,
    "go.autocompleteUnimportedPackages": true, 
    "go.gocodePackageLookupMode": "go",
    "go.gotoSymbol.includeImports": true,
    "go.useCodeSnippetsOnFunctionSuggest": true,
    "explorer.confirmDelete": false,
    "go.formatTool": "goimports",
    "go.docsTool": "gogetdoc",
    "go.buildFlags": [],
    "explorer.confirmDragAndDrop": false,
    "window.zoomLevel": 0.8,
    "editor.minimap.enabled": false,
    "go.useLanguageServer": true,
    "go.delveConfig":{
        "debugAdapter":"dlv-dap"
        },
    "[go]": {
        "editor.snippetSuggestions": "none",
        "editor.formatOnType": true,
        "editor.formatOnSave": true,
        "editor.codeActionsOnSave": {
            "source.organizeImports": true
        }
    },
    "gopls": {
        "experimentalWorkspaceModule": true,
        "usePlaceholders": true, // add parameter placeholders when completing a function
        "completionDocumentation": true // for documentation in completion items
    }
},
    
}
Run Code Online (Sandbox Code Playgroud)

项目的结构如图所示?

pse*_*sma 9

您可能会幸运地将 delveConfig 切换为使用旧模式:

    "go.delveConfig":{
        "debugAdapter":"legacy"
        }
Run Code Online (Sandbox Code Playgroud)

我和我的团队最近在更新 VSCode 后开始看到同样的问题。这里有关于此设置的更多信息:https://go.googlesource.com/vscode-go/+/HEAD/docs/debugging.md#switching-to-legacy-debug-adapter,但我相信根本原因(如果这确实解决了您的问题)将是您的 Golang 版本而不是 dlv-dap 的目标版本。Go 版本 1.15 以下的任何内容都需要使用旧模式,而最新版本的 delve 调试器现在默认会跳过旧模式。

我还需要在此更改生效之前终止 VSCode。根据 dlv-dap 文档,您还可以通过将 launch.json 的模式切换为“远程”来强制其进入旧模式,因此可能有一些(也许更好)的方法来解决此问题。


Qui*_*oth 6

这可能是由于最近更新了VS Code Go 扩展

第一个选项是通过"Go: Install/Update Tools"从命令面板运行命令来修复它(Linux/Windows : Ctrl+ Shift+ PMac : ?+ ?+ P)。

然后,从菜单中标记dlv& dlv-dap,然后点击确定开始安装/更新。

Delve 的本机 DAP 实现正在积极开发中,因此请使用从其主分支构建的 Delve 来利用最新的功能和错误修复。Go 扩展将这个最新版本的 Delve正式发布的 dlv 版本分开维护,并使用名称 dlv-dap 安装它。

第二种选择是使用旧式调试适配器。更多关于这个在下面的链接...

https://github.com/golang/vscode-go/blob/master/docs/debugging.md查看完整文档

  • 这将是比当前答案更容易接受的答案。 (2认同)