The Debug Adapter runs in a separate Node.js process, which is spawned by VS Code when you debug Go code.
Please see the Debug Adapter Protocol (DAP) to understand how the Debug Adapter acts as an intermediary between VS Code and the debugger (Delve).
This codebase is currently in flux: We are working on using Delve
's native DAP implementation instead of this one. Follow along with golang/vscode-go#23 for updates on that work.
Before you start working on your change, please read the contribution guidelines. This document assumes that you are already familiar with the process of building, running, and sideloading the VS Code Go extension.
As a next step, you may want to debug the Debug Adapter, in order to understand how your change work with Delve.
NOTE: Since the Debug Adapter runs in a separate process from the rest of the extension, the steps below only enable you to debug the Debug Adapter code, not the entire extension. To debug the entire extension, as well as the debug adapter, see the instructions below.
vscode-go
folder in VS Code.Launch as server
debug configuration.vscode-go/src/debugAdapter/goDebug.ts
file."debugServer": 4711
in the root of the configuration.goDebug.ts
file.You can take this step if your change modifies both the Debug Adapter and the main extension.
vscode-go
folder in VS Code.Extension + Debug server
debug configuration. This combines Launch Extension
and Launch as server
debug configurations.F5
). It will start an Extension Development Host window and the Debug Adapter server process at port 4711. Debuggers are attached to both processes and the breakpoints will apply to both of them."debugServer": 4711
to the root of the configuration. Then, run the debug configuration (F5
), which will start debugging of the Go application.Launch Extension
and Launch as server
).In some very rare cases, you may find it helpful to debug VS Code itself. An example of such a case might be veryfing workbench behavior and state before executing debug adapter API calls.
First, ensure that you can build and run VS Code from source successfully.
Next, follow these steps:
vscode-go
extension to the local instance of VS Code. This can be done by copying the contents of the vscode-go
directory into $HOME/.vscode-oss-dev/extensions/ms-vscode.go
(the exact location may vary by OS).vscode
folder in Visual Studio Code.Launch VS Code
debug configuraion from the drop-down in the Run view. Add breakpoints as needed.vscode-go
folder. Choose the Launch as server
debug configuration in the Run view. Add breakpoints as desired in the vscode-go/src/debugAdapter/goDebug.ts
file."debugServer": 4711
.