'Couldn't start dlv dap

When I launch in VSCode dlv dap debug, I get this message:

Couldn't start dlv dap:
Error:timed out while waiting for DAP server to start

I already have launch configurations for the project:

lunch.json:

{
"version": "0.2.0",
"configurations": [
    {
        "name": "Launch file",
        "type": "go",
        "request": "launch",
        "mode": "debug",
        "program": "${workspaceFolder}",
        "showLog": true,
        "env": {
            "GO111MODULE": "on"
        }
    }
]
}

and setting.json is :

{
"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
    }
},
    
}

The structure of the project is shown in the figure:



Solution 1:[1]

You might have some luck switching the delveConfig to use legacy mode:

    "go.delveConfig":{
        "debugAdapter":"legacy"
        }

My team and I recently began seeing the same issue after updating VSCode. There's a little more info on this setting here: https://go.googlesource.com/vscode-go/+/HEAD/docs/debugging.md#switching-to-legacy-debug-adapter, but I believe root cause (if this does indeed solve your issue) is going to be your version of Golang is not the version targeted by dlv-dap. Anything below Go version 1.15 needs to use legacy mode, and the latest version of the delve debugger happens to skip legacy mode by default now.

I also needed to kill VSCode before this change took effect. According to the dlv-dap docs, you can also force it into legacy mode by switching launch.json's mode to "remote", so there's likely a few (maybe better) ways to resolve this issue.

Solution 2:[2]

This might be happening due to recent updates to VS Code Go extension.

First options is to fix it by running "Go: Install/Update Tools" command from the Command Palette (Linux/Windows: Ctrl+Shift+P, Mac: ?+?+P).

Then, mark dlv & dlv-dap from the menu, and hit ok to start install/update.

Delveā€™s native DAP implementation is under active development, so take advantage of the most recent features and bug fixes by using Delve built from its master branch. The Go extension maintains this newest version of Delve separately from the officially released version of dlv and installs it with the name dlv-dap.

Second option, is to use legacy debug adapter. More on this in the link below ...

Check out the full documentation at https://github.com/golang/vscode-go/blob/master/docs/debugging.md

Solution 3:[3]

For macOS users:

brew install delve

Solution 4:[4]

Linux/Windows: Ctrl+Shift+P, Mac: ?+?+P enter image description here

enter image description here

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2
Solution 3 Skatox
Solution 4 LIU YUE