UnitTests may be great, but how about a big cheer for GoodDebuggers which have mainly-helpful IDEs? I'm thinking mainly of the debugger in VisualStudio and its many clones. UnitTests may detect bugs, but there's nothing like being able to see the values changing, check for other parts of memory being overwritten, etc. when it comes to finding the causes.
Windows CeePlusPlus programmers (CeeLanguage programmers have LCC-Win32 and Insight) have been stuck with commercial products for GoodDebuggers for a long time. Bloodshed's (currently beta) Dev-C++ 5 is starting to look like it may change that. Anyone know any alternatives? Even commercial ones? -- AnAspirant
There's a new generation of logging debuggers that (behind the scenes) single-step through your program and record everything that happens. This enables them to "travel back through time", showing you everything your program has done, statement by statement. You may also be able to query the history, to find every time a given variable was actually referenced or changed.
(One should expect that this will consume lots of disk space and CPU time. But these are cheap, and your development time is not. ;-)
Contrast with ForgetTheDebugger