Debugging
Use the debugger to pause your program, inspect variables and goroutines, and step through function calls.
Before debugging
Configure common debugging properties and behavior in .
Define a run/debug configuration if you are going to use a custom one. This is required if you need some arguments to be passed to the program or some special activity to be performed before launch. For more information about setting up run/debug configurations, refer to the Run/debug configurations section. Most of the time, you don't need this to debug a simple program that doesn't expect arguments or have any special requirements.
General debugging procedure
Set breakpoints, start a debugging session, and inspect the program when it stops. Then step through the code or resume execution to the next breakpoint.
Define where the program needs to be stopped. This is done using breakpoints. Breakpoints are special markers, which represent places and conditions when the debugger needs to step in and freeze the program state. A program, which has been frozen by the debugger is referred to as suspended.
Run your program in debug mode.
Just like with regular running of the program, you can at the same time.
After the program has been suspended, use the debugger to get the information about the state of the program and how it changes during running.
The debugger provides you with the information about variable values, profiler labels, the current state of the goroutines, and so on.
While these tools let you examine the program state at a particular instant, the stepping feature gives you the control over step-by-step execution of the program. By combining the tools you can deduce where the bug is coming from and test your program for robustness.