C++ Pointers and Memory in One Hour
by Ana Petrova
A repeatable method for finding any bug, plus the tools that make it fast.
DO Created by Dimitri Orlov
Every bullet below is something you will have built, shipped or be able to explain by the time you finish the last lesson.
6 modules · 29 lessons · 3h 52m of material
6 lessons running 48m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.
Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.
6 lessons running 50m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.
Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.
5 lessons running 40m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.
Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.
4 lessons running 30m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.
Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.
5 lessons running 40m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.
Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.
3 lessons running 24m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.
Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.
6 modules · 29 lessons
3h 52m total length
Short list, and deliberately so. If you meet these you can start today.
Debugging is treated as a talent when it is actually a method. Senior developers are not luckier, they narrow the search space systematically instead of changing lines to see what happens. This course teaches that method and then the tools that make each step faster.
The method comes first: reproduce reliably, shrink to a minimal case, form a hypothesis that can be falsified, then use the tool that falsifies it fastest. You will apply it to a set of prepared bugs, including a race condition, a memory corruption, an off-by-one in a rarely taken branch, a dependency upgrade regression and a bug that only appears in production configuration.
The tooling modules cover interactive debugging beyond stepping, conditional breakpoints, watchpoints, evaluating expressions, changing values live, and reverse debugging with rr. You also learn to read a core dump and a stack trace properly, use logging and tracing as an intentional instrument rather than scattered print statements, run git bisect with an automated test to identify the offending commit, and apply sanitizers and the browser devtools performance panel. The closing module covers debugging in production without making things worse.
Still unsure about something? Write to misteryjj100@gmail.com and a human answers, usually the same working day.
Reviews are written by people who bought this course. We publish the critical ones too.
5.0
Rated 5.0 out of 5Course rating · 2 reviews
Sanna Virtanen
Software engineer
Reproduce, minimise, falsify. It is on a sticky note on my monitor now. I used to thrash for hours; writing down what I am trying to disprove before touching anything gets me there in a fraction of the time.
Diego Fuentes
Backend engineer
Ten years with a debugger open and I only ever used breakpoints and step-over. Turns out a watchpoint is the tool for this field changes and I do not know who is changing it, which is a bug I hit about monthly. The automated bisect chapter is excellent too.
Rust engineer and performance specialist
Dimitri writes Rust for networking gear and battery-powered devices, and came to it after a long stretch of production C he does not miss. He teaches ownership and borrowing by showing the exact C bug each rule prevents, which makes the borrow checker feel like a colleague rather than an obstacle. His courses build a real binary — a parser, a server, a no-std firmware image — and then take a profiler to it. He reviews for a Rust working group and speaks at systems meetups.
One-time payment · lifetime access