In working with TraceAlzyer, I have found it is extremely useful for real time debugging.
In the past I have often used the C Library printf statements with format control for tracing program flow. I found this technique to have many liabilities… because of the interaction with a serial hardware port, or if the using SWO pin as the uart stream to a virtual terminal, an intrusive impact on the execution patterns. Additionally the serial IO uart routines added a large amount of firmware code and interfered with the real time determinism of the system under test.
The solution was to use TraceAlzyer’s with the vTracePrintF statement. With vTracePrintF there is a symmetric load, and in my system this is way under 1% additional load. Also TraceAlyzer has very powerful debug statements to watch variables in real time without using IDE debug watch windows and breakpoints.
In debugging a driver breakpoints will often loose the context of information in the driver. For example in a UART FIFO serial driver, setting a breakpoint will cause the loss of the subsequent data stream that occurs after the breakpoint is hit. This makes frame errors nearly impossible to detect in a serial stream because the data is obviously lost. TraceAlzyer solves this problem.
Amazing tool. I wish I would have had this earlier, I could have saved myself a lot of dead end work and errors in design.