Example of debug command with valgrind: in matrix/ valgrind ./matrix-lib-test # or if there are errors the following options may be useful: valgrind --leak-check=full --db-attach=yes ./matrix-lib-test The easiest way to run valgrind, however, is "make valgrind" which automatically runs all the tests. It will fail if valgrind is not happy. Then you should manually run valgrind on whichever one failed (which you can figure out by looking at valgrind.out in the last directory, and looking for the last filename *-test that was printed). --- For emacs users: ensure proper indentation it may be helpful to copy http://google-styleguide.googlecode.com/svn/trunk/google-c-style.el to your home directory as ".google-c-style.el", and add to your .emacs file the lines: \verbatim (load-file "~/.google-c-style.el") (add-hook 'c-mode-common-hook 'google-set-c-style) (add-hook 'c-mode-common-hook 'google-make-newline-indent) \endverbatim -- Fixing commas with no spaces, and some other simple style violations. for x in */*.{h,cc}; do cp $x tmpf; cat tmpf | perl -ane 'if(!m/["'\'']/ && !m://: && !m/_\{/) { s/,(\S)/, $1/g; s/if\(/if (/; s/while\(/while (/; s/switch\(/switch (/; } print; ' > $x; done # add a space after comment-begin // for x in */*.{h,cc}; do cp $x tmpf; cat tmpf | perl -ane 's:(^|[^\:])//([^ \n/ $x; done # make it so declarations with * and & have the * or & as part of the type: for x in */*.{h,cc}; do cp $x tmpf; cat tmpf | perl -ane ' if (! m:^\s*(//|/\*): && !m:determinized\*: && !m:([a-z]+ ){5}:) { for($x=1;$x<=10;$x++){ s|([^&/ ])([*&]) ([a-z])|$1 $2$3|g; }} print; ' > $x; done # Remove unnecessary parentheses in single-line "return" expressions. for x in */*.{h,cc}; do cp $x tmpf; cat tmpf | perl -ane ' s/return\s*\(([^()|?]+)\)\s*;/return $1;/; print; ' | diff - $x; done