Software engineers spend far more time debugging their code than they do typing it.
GDB can be a powerful tool to cut dramatically the time it takes to diagnose the root cause of bugs. But most GDB users have only just scratched the surface of what it can do.
What you will learn in this course:
- Getting the most out of basic GDB operations e.g. stepping commands, breakpoints, watchpoints, catchpoints, dprintf, TUI mode
- Advanced debugging e.g. stepping past uninteresting functions, debugging multithreaded issues, debugging optimised code, time travel debugging in GDB's built-in functionality
- Pretty printers: what they are, how to enable them, how to write a customer pretty printer
MORE ABOUT THE SPEAKER
Dr Greg Law
Founder / CEO
Greg is a renowned C/C++ conference speaker and founder of Undo (the time travel debugging company for Linux).
Greg has 20 years’ experience in the software industry and has held development and management roles at the pioneering British computer firm Acorn, as well as fast-growing start ups, NexWave and Solarflare.
Greg holds a PhD from City University, London. He lives in Cambridge, UK where he founded Undo to help ease the pain of debugging complex software.
Getting the most out of basic GDB operations
- Stepping commands and how to use them
- Breakpoints, watchpoints and catchpoints (including conditions, attached commands, etc)
- dprintf (hybrid debugging / logging)
- TUI mode (hybrid ncurses “GUI”)
- Stepping past uninteresting functions
- Compiling/injecting code from the debugger
- Tracing exception throw paths
- Debugging multithreading issues
- Debugging optimized code (with or without Link Time Optimization)
- Time travel debug (demonstrating GDB’s built-in functionality or rr so that no commercial software is needed for this part)
Pretty printers and pitfalls & tricks
- What they are, how to enable them (e.g. STL-provided pretty printers)
- How to write a custom pretty printer
- The right tool for the job
- Overview of other checkers/sanitizers, debug techniques, etc
- Other debuggers