What is an MCU program trace?
When you trace a program the debugger records jumps and branches while the program is running. This means that when you stop the program or it hits a breakpoint you can figure out how the program got to this point. Some debuggers can also trace data, which means that you can look at the historical contents of variables, not just the current value. So with "ordinary" debugging you can see that the program crashed because of a "divide  by zero" bug in line 432, but with tracing you can see that line 432 was executed because the test in line 411 was true and the branch in 422 was not taken and that the variable n was 12 and 13 before it was finally set to zero.