Here are some debugging techniques * Reduce the specification and the input to localize the error ----+++ Format Checking * Use a FormatChecker to verify the results of transformations ----+++ Unit Testing * Write a unit test using StrategoUnit ----+++ Debug * Print intermediate results using debug * Use the debug strategy *with an argument*. It turns out that the debug strategy will accept a string prefaced by an exclamation mark, thus: debug(!"after doing something or other: ") If you do this, it will print the current aterm as usual, but first it will print the string, so that you know where in the program it is. ----+++ Tracing * Use the tracing facilities of the StrategoCompiler; See StrategoDebug ----+++ Pitfalls * Compare your code with the list of PitFalls