CHAPTER 9 Tracking Origins

Once we have observed an infection during debugging, we need to discover its origin. In this chapter, we discuss omniscient debugging, a technique that records an entire execution history such that the user can explore arbitrary moments in time without ever restarting the program. Furthermore, we explore dynamic slicing, a technique that tracks the origins of specific values.

9.1 REASONING BACKWARD

A common issue with observation tools, as discussed in Chapter 8, Observing Facts, is that they execute the program forward in time, whereas the programmer must reason backward in time. Applied to interactive debugging tools, this means that the programmer must carefully approach the moment in time where the infection is ...

Get Why Programs Fail, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.