Although the author alludes to using WPPs for certain specific debugging
purposes, it seems that WPPs can be an extremely valuable tool for
debugging in general. Consider traversing the WPP tree backwards.
Now,
instead of just a stack trace a programmer gets the entire execution
history of a failed, but instrumented program. This removes the
need to
guess where a bug first manifests itself, break at that point and
tediously trace a program. The WPP allows the programmer to quickly
identify which sections of code are executed and decide which paths
seems erroneous, and add data collection probes. The program
can then
be rerun with the data collection probes to check data values within
basic blocks. Still, notice, the programmer, does not need to
set break
points and step through a program, since the entire program path is
known. The additional data output justs lets the programmer see
where
in the path a variable first took on an erroneous value, and allows
the
program to look at the path trace from that point back to understand
the
flow that led to the incorrect assignment.