Part 1 : Introduction
The program valgrind aims to emulate the CPU to collect several informations :- Debugging informations :
- To check the allocation/deallocation
- To check the memory read/write
- Profiling informations :
- To evaluate the time spent in each function of a program
- To find the hot spots in a program
- Branch-prediction
- Heap usage
The documentation is at http://valgrind.org/.
From this page :
The Valgrind distribution currently includes six 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 a heap profiler. It also includes three experimental tools: a stack/global array overrun detector, a second heap profiler that examines how heap blocks are used, and a SimPoint basic block vector generator. It runs on the following platforms: X86/Linux, AMD64/Linux, ARM/Linux, ARM64/Linux, PPC32/Linux, PPC64/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux, MIPS64/Linux, X86/Solaris, AMD64/Solaris, ARM/Android (2.3.x and later), ARM64/Android, X86/Android (4.0 and later), MIPS32/Android, X86/Darwin and AMD64/Darwin (Mac OS X 10.12)
Take a look at the page http://valgrind.org/info/about.html.