Contents [0/6] |
Video [1/6] |
Programmatic Debugging [2/6] |
run and draw [3/6] |
drawSteps [4/6] |
functions [5/6] |
drawStepsOfMethod [6/6] |
(Click here for one slide per page)
Video [1/6] |
Programmatic Debugging [2/6] |
With Eclipse debugger, it can be hard to visualize the whole state of the program
I wrote the Trace class to draw pictures of your program as it executes
Trace uses graphviz
run and draw [3/6] |
01 |
package algs11; import stdlib.*; public class Hello { public static void main (String[] args) { Trace.run (); int i = 0; while (i < 3) { Trace.draw (); StdOut.println (i); i = i + 1; } } } |
The stdlib
package contains a class Trace
which can be used to visualize the execution of programs.
Trace.run()
causes the program to be run in a debugger.
Trace.draw()
causes a drawing to be created. The
drawings will be created in a folder on your Desktop. To change
the location, or for further discussion, see here.
drawSteps [4/6] |
01 |
package algs11; import stdlib.*; public class Hello { public static void main (String[] args) { Trace.drawSteps (); Trace.run (); int i = 0; while (i < 3) { StdOut.println (i); i = i + 1; } } } |
Trace.drawSteps()
causes a drawing to be
created at every step of execution.
Trace.drawSteps()
must be called before
Trace.run()
Trace
configuration functions must be
called before Trace.run()
functions [5/6] |
01 |
package algs11; import stdlib.*; public class Hello { public static void main (String[] args) { Trace.drawSteps (); Trace.run (); f (0); g (0); } public static void f (int i) { StdOut.println (i); } public static void g (int i) { if (i < 3) { StdOut.println (i); g (i + 1); } } } |
Method calls are shown as red boxes
Method name and line number are listed
Arrow shows where the function will return to
drawStepsOfMethod [6/6] |
01 |
package algs11; import stdlib.*; public class Hello { public static void main (String[] args) { Trace.drawStepsOfMethod ("f"); Trace.drawStepsOfMethod ("g"); Trace.run (); f (0); g (0); } public static void f (int i) { StdOut.println (i); } public static void g (int i) { if (i < 3) { StdOut.println (i); g (i + 1); } } } |
drawStepsOfMethod()
causes a drawing to be
created at every step of the named method.
drawStepsOfMethod()
can be called more than once.
Revised: 2008/03/17 13:01