One of the hardest problems facing embedded developers today is the limited visibility into the workings of their software. This is especially apparent when working on systems with strict realtime constraints because standard debugging techniques generally rely on altering the execution behavior of the software being debugged. For instance, with traditional debuggers, you typically halt the microprocessor to inspect the code paths taken and the state of the system. Alternatively, you may instrument your code to log values to help identify bugs in the system. Both of these debugging techniques cause problems when successful execution of your program relies on specific timing characteristics of your system. Common classes of bugs that these traditional techniques fall short in debugging include race conditions and random glitches.
展开▼