Probing
Tracing can be accomplished by probing the state of execution. Execution can be watched (or recorded) by printing the location of execution and the state of instance variables. This is probably how you currently debug your programs.
for(int i=0; i < array.length; i++){ System.out.print("At index: "+i+" "+a[i]); }
We can probe the state of all objects in the array during
execution. This would allow us to determine if values
contain the "expected" values. This method of debugging
is a valuable skill once you know the location of the bug.
Probing does require that a class implements the toString()
so that you can meaningfully print the state of an object.