Course curriculum

    1. GDB (linux), LLDB (Mac), or Visual Studio (Windows)

    2. GDB on Linux (and lldb)

      FREE PREVIEW
    3. GDB on Windows Subsystem for Linux

    4. LLDB on Mac

    1. Compile-time vs Run-time debugging

    2. Compiler Errors (Understanding the compilers perspective)

    3. Compilers cannot read our minds

      FREE PREVIEW
    4. Treat Compiler Warnings (-Wall, -Werror, and -Wconversion) as Errors (Use C++ {}'s to your advantage)

    5. Trick Leveraging multiple compilers

    6. Using our Compilers

    7. Tip: Write your code neatly

    1. A Debugging Exercise (swap_buggy)

    2. printf debugging (std::cout, console.log)

    3. printf debugging (one more look) with DEBUG

    1. GNU Debugger (GDB) - The Basics

      FREE PREVIEW
    2. Why We Compile with Debug Symbols (-g)

    3. Printing Values and Listing Source Code

    4. Figuring out a Variable Type with 'whatis' and 'ptype' (info types)

    5. More with ptype

    6. Breakpoints (br and info) and Continue (c)

    1. GDB the Text User Interface (TUI)

      FREE PREVIEW
    2. Redirecting output from GDB (to another file or terminal)

    3. Conditional Breakpoints

    4. More ways to continue and step through code (advance, and until)

    5. Watching (watch and rwatch) Variables

    6. Breakpoints Part 2 (enable, disable, and save breakpoint)

    7. Display and undisplay

    8. Getting help in GDB (info)

About this course

  • $19.99
  • 73 lessons
  • 5 hours of video content

Learn how to get yourself out of trouble by learning essential debugging skills.

I always tell my students, that understanding how to debug is one way to understand how a program works. Debuggers allow you to see inside of a program, understand the workflow the state of a program. If you're on a new project for instance, what better way to get familiar with the product than to step through it one line or function at a time. And of course, the main reason to learn debugging is because some estimate we spend up to 90% of our programming time debugging -- and now writing new code. Debugging is an essential skill, and you should learn at least the basics in this course!

Reviews

Hear directly from students about the course!

5 star rating

An Absolute Must Have for C/C++ Developers!

Robert Strickland

This course has significantly improved my C/C++ systems engineering capabilities as well as overall knowledge of developing good C/C++ code. Immediately afte...

Read More

This course has significantly improved my C/C++ systems engineering capabilities as well as overall knowledge of developing good C/C++ code. Immediately after starting the course I was able to debug some shared memory issues in my codebase. I was thoroughly impressed with how Mike details debugging w/ GDB.

Read Less

FAQ

  • Is there a free preview available?

    If you enroll on the website, you can view many of the lessons free. I also have a YouTube Channel that I think will give you an idea of my instruction style (as well as with a few free lessons on this course as well!)

  • Can I follow along using any debugger?

    In this course I'm going to be using a terminal based debugger, GDB. GDB is surprising more powerful than folks think, and learning GDB from the terminal is optimal. GDB is also much more widely available. That said, you can probably use LLDB (GDB to LLDB command map ) to follow along with most lessons, but I strongly recommend using GDB for your platform.

  • Do I have to know C or C++ for this course?

    Most of the examples are shown in C and C++ in this course. I purposefully try to use mostly C examples, because I think they are the simplest examples to follow along with. I would recommend you are comfortable with one of the languages. If you're comfortable with other languages (e.g. DLang or Objective-C), you can probably also follow along just fine. Code examples are provided in lessons for C and C++ however.

  • Do the lessons include source code?

    Yes! Most every lesson where there is an exercise has a source file included. This will make it easy for you to follow along as I work through and show you different techniques of debugging.