To get back to here: bit.ly/debugging-workshop
Slack Channel: #gophercon-2020-debugging-workshop
Solving bugs can be incredibly challenging. It can often feel like our programs have the upper hand. My goal for this course is to instill in you the confidence that you can understand and squash your bugs, no matter how challenging they are.
The next time you encounter a difficult bug, I'd like for you to be able to say:
I don't know what is wrong with my program but I know how to find out!
In this course, we will be covering a number of tools that I have found useful in understanding Go programs.
You will need to clone this repo:
git clone https://github.com/jasonkeene/debugging-workshop
There are a few things you should have setup on your machine before starting on the exercises. You will need to:
A Linux machine will be needed for the more advanced exercises as they
utilize capabilities specific to Linux. If you do not have a Linux machine
handy, no worries. This repo contains a Vagrantfile
that will provision a
Linux VM for you. It is recommended to do this in advance of the workshop as
it can take some time to download the machine image and provision the VM. You
will need to:
- Install VirtualBox
- Install Vagrant
- Run
vagrant up
from the repo root to provision the VM - Get a shell on the VM by running
vagrant ssh
If you are not using the Vagrant VM you will need to:
You can see how these were installed in the VM by looking at the
vagrant-provision.sh
file.
This workshop is broken down into a series of exercises. We will go through these individually during the class:
- Introduction
- Starting a Debugging Session
- Navigating Your Program
- Demystifying Debuggers
- Remote Debugging
- Debugging Inside a Container
- Debugging from Core Dumps
- Automating Delve
- Deterministic Debugging
- pprof
- bpftrace
Please ask questions as we work through these exercises! If I went too fast over something that needs additional explanation please stop me. Some of the later sections build on earlier sections so it is important that we all understand the material before moving forward. You can also ask questions during the breaks if you prefer.
If you have any feedback about this workshop, the presenters, the content, the remote format, etc please let us know by filling out this form!