Software provides much of the functionality of a broad spectrum of devices and systems. Software quality – and the ways in which the software interacts with the hardware on which it runs – is therefore of paramount importance. The failure to detect bugs until shortly before a product’s launch deadline has been responsible for costly and embarrassing delays to companies, resulting in millions of dollars of lost revenue. The consequences of not detecting serious bugs until after launch can be even worse, resulting in product liability lawsuits and the need for expensive recalls. As a result, debug is a crucial component in the successful development of any embedded system. Yet its efficient implementation is a component that is often overlooked because of the inherent difficulties that are encountered when it is implemented using traditional techniques.