The most effective debugging tool is still careful thought, coupled with judiciously placed print statements. by Brian Kernighan