Put all the blocks of the program into a list Q. while Q is not empty { Start a new (empty) trace, call it T. Remove the head element b from Q. while b is not markedMark b { append b to the end of the current trace T. Examine the successors of b (the blocks to which b branches); if there is any unmarked successor b <- c } End the current trace T. }