The Ultimate Guide to Debugging With Go

$99

The Ultimate Guide to Debugging With Go

50 Lessons

The Most important skill you were never taught.

Being able to debug locally and in production is a critical skill for any Go engineer, but it is rarely taught explicitly.

It has taken me many years of working with Go in production to get comfortable debugging and I want to accelerate your learning by teaching you everything I wish I had known when I started out.

  • 👨🏻‍💻 No filler content. Concise lessons with practical advice.
  • 👩🏻‍💻 No experience with debugging necessary. We start from the basics and finish with advanced topics.
  • 🧑🏽‍💻 Guided exercises along the way.
  • 💂🏻 Purchase once, access forever.
  • 🚀 Always up to date.
  • 📜 Receive a certificate for completing the course!

Wondering what's in the course?

Introduction

Lesson 1: Welcome!
Lesson 2: What is debugging and why do we do it?

Methods of Debugging - Debugging by Eye

Lesson 1: Introduction
Lesson 2: Common errors & being aware of code patterns
Lesson 3: Exercise
Lesson 4: Exercise Solution
Lesson 5: Pair Programming
Lesson 6: Story Time - Production debugging example

Methods of Debugging - Logging

Lesson 1: Introduction to Logging
Lesson 2: Logging Locally, the simple way
Lesson 3: Logging for production: slog and log levels
Lesson 4: Logging for production: slog, Kibana, Elasticsearch
Lesson 5: Exercise
Lesson 6: Exercise Solution
Lesson 7: A couple of warnings on logging
Lesson 8: Bonus Lesson: httputil

Methods of Debugging - The Debugger

Lesson 1: Introduction to the Debugger
Lesson 2: Setting up the Debugger in GoLand
Lesson 3: Setting up the debugger in VSCode
Lesson 4: Reading panic traces & debugging nil pointer exceptions
Lesson 5: Debugging goroutines
Lesson 6: Debugging tests
Lesson 7: Debugging a HTTP request
Lesson 8: Exercise
Lesson 9: Exercise Solution
Lesson 10: Debugging a Go application in Docker

Debugging in Production - Metrics

Lesson 1: Introduction to Metrics
Lesson 2: What should I measure?
Lesson 3: Adding Metrics to an API
Lesson 4: Intro to Prometheus; Building Dashboard in Grafana
Lesson 5: Exercise
Lesson 6: Exercise Solution
Lesson 7: A warning about measuring too much

Debugging in Production - Tracing

Lesson 1: Introduction to Distributed Tracing
Lesson 2: Adding Traces to a Go API
Lesson 3: Tracing across services
Lesson 4: Exercise
Lesson 5: Exercise Solution
Lesson 6: A warning on Sampling

Debugging in Production - Profiling & Pprof

Lesson 1: Introduction to Profiling
Lesson 2: Let's add Profiling to your Go Application
Lesson 3: Profiling the Heap (Memory)
Lesson 4: CPU tracing & pprof list
Lesson 5: Profiling goroutine usage
Lesson 6: Exercise
Lesson 7: Exercise Solution
Lesson 8: Should I leave pprof running always?
Lesson 9: Story Time - How I used pprof to 10x API throughput
Lesson 10: Bonus Lesson: gotraceui & flight recording (Go 1.22)

Wrapping Up

Lesson 1: Thank you!

About the Course Author

Matt Boyle is an experienced technical leader in the field of distributed systems, specializing in using Go. He has worked at huge companies such as Cloudflare and General Electric, as well as exciting high-growth startups such as Curve and Crowdcube.

In 2022, Matt published the best-selling book "Domain-Driven Design with Golang". It's available at all good book sellers.

Matt has been writing Go for production since 2018 and often shares blog posts and fun trivia about Go over on Twitter.

Matt Boyle