2 minutes
Delve Hand Book
Launch a session
dlv debug works like go run, it will build an run a GO package
dlv exec will start a seesion with a precompiled binary, in order to properly debug a binary,
it shoud be compiled with optimizations disablesd, eg. with -gcflags="all=-N -l"
dlv attach will attach to a PID of a runnig Go binary
Delve commands in a debugging session
print, p
whatis will print the datatype of an expression
locals will print all variables in the current execution step
args will print the current fucntion’s arguments
vars will print the avaliable package variables
funcs will print the avaliable functions
types will print the avaliable types
list display the code around the current execution step or a specific linespec.
Breakpoints
break, b:
- Break at a specific line, sucn as
break main.go:15 - Break at a relative point int a file
break +5 - Whenever a function is called or defined, as
break main.myfunc
breakpoints, bp: display all breakpoints along with their IDs.
condition, cond: set smarter stop conditions and not halt execution in a specific line, but whenever a
given condition is met.
clear and clear all can be used to clear a specific or all breakpoints.
trace: a breakpoint that doesn’t halt execution, but print message whenever eht execution passes
through that point
Move one step at a time!
continue, c runs until the next breakpoint or program termination
next, n N steps over N source lines, staying int the same function
step, s performs a single step forward in the application. If the next step is another fucntion,
it will descent to its call.
stepout, so steps out of the current function
restart restart the debugging session, but keeps breakpoints and conditions