Golang delve
From wikinotes
delve is a go debugger.
It is more knowledgeable about the go runtime than golang gdb .
There are also editor integrations.
Documentation
Locations
~/.config/dlv/config.yml
config options
Install
go install github.com/go-delve/delve/cmd/dlv@latest
Configuration
Persistent
# ~/.config/dlv/config.yml max-string-len: 1000 max-array-values: 1000Dynamic
Within a delve session, you can modify debugger config values.
config max-string-len 1000
Usage
Delve builds your executable automatically with flags required for it to debug your program.
Start Delve
# start debugger dlv debug [example.com/x/foo/package] [-- [--your-params]] # run program dlv test # run tests in PWD dlv test ./internal/foo # run local tests in dir dlv test example.com/x/foo/package # run package on GOPATH dlv test -- -test.run ^TestSanitizePath$ # run matching tests in PWD # useful test params: -test.run # regex test to match -test.v # verbose (print tests as run)Breakpoint
You can add breakpoints in src, or interactively
runtime.Breakpoint() // delve breakpointb main.main # add breakpoint to 'main.go's 'main' method b main.go:10 # add breakpoint to 'main.go's line 10Session
Add your breakpoints, then continue to execute your program
c # continue (start executing)Inspect your program, learn
p yourVar # print var l # print location n # next line (enters loop, not skip to end) s # step into line <enter> # repeat last command