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.