Debugging software is challenging because of the increasing complexity of software and hardware, and the diversity of operating systems in use today. These factors make it difficult for software companies to reproduce and fix bugs that occur in released code, especially nondeterministic bugs that occur at a customer site. What makes matters worse is the increase in bugs because of the commercial pressure to release software early, aided and abetted by the ease of delivering software patches over the Internet. Tracking down and fixing these bugs can be a nightmare, costing a significant amount of time and money. These software bugs account for nearly 40 percent of computer system failures 1 and cost the US economy an estimated $59.5 billion ...