Valgrind is an instrumentation framework for building dynamic analysis tools.
There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile your programs in detail. You can also use Valgrind to build new tools.
The Valgrind distribution currently includes seven production-quality tools: a memory error detector, two thread error detectors, a cache and branch-prediction profiler, a call-graph generating cache and branch-prediction profiler, and two different heap profilers. It also includes an experimental SimPoint basic block vector generator.
It runs on the multiple platforms. Valgrind is Open Source / Free Software, and is freely available under the GNU General Public License, version 2.[*]- Valgrind prefers don't receive donations. Consequently, the prices of its products are lower than the rest, which also makes them easier to purchase.
[*] Text taken from the Valgrind's website, where we contribute 'our' artworks.
More information: http://valgrind.org/