In some applications, it is not feasible for the debugger to interrupt the program’s execution long enough for the developer to learn anything helpful about its behavior. If the program’s correctness depends on its real-time behavior, delays introduced by a debugger might cause the program to change its behavior drastically, or perhaps fail, even when the code itself is correct. It is useful to be able to observe the program’s behavior without interrupting it.
Using GDB’s ‘trace’ and ‘collect’ commands, you can specify locations in the program, called “tracepoints”, and arbitrary expressions to evaluate when those tracepoints are reached.
Read the rest of the chapter if you plan to use it.