"I typically use unit testing tools to identify errors in my code when I develop software. I follow this with a debugging process and additional testing of the bug fixes. This is known as White Box Testing. The debugging tools I use most often are GDB and DBX, which are both public domain products. I prefer these because they provide command-line interfaces. I used command-line when in school, and it has always been easier for me to work with than a GUI. Some other tools I use are code-based tracers, profilers, and interpreters."