There are many powerful techniques to debug software, including use of symbolic debuggers, emulators, and the always popular “print” statements. However, some of the hardest-to-find bugs in an embedded system will never be found using these methods. Hard problems to debug include glitches, timing errors, memory corruption, problems with interrupt handlers, and errors in device drivers. This paper describes how a logic analyzer can be used to test and debug the real-time execution when all else fails. The logic analyzer methods provide a highly-precise window to monitor the real-time execution of code where other debugging techniques fail.