Part II: Observing Executions

In this part, we show how to observe executions – by tracing, by interactively debugging, and more.

  • Tracing Executions presents a number of ways to observe executions by logging locations and program states – and by narrowing these down to specific conditions and events.

  • How Debuggers Work shows how to build an interactive debugger, allowing you to explore program executions at will.

  • In Asserting Expectations, we show how to have the computer check for errors at runtime – including pesky memory errors in C and similar languages.

  • Debugging Performance Issues shows how to detect which parts of a program require most resources.