Syntax: valgrind [options] <your-program> <args>
–db-attach=yes
: to automatically attach gdb on errors–error-limit=no
: to display all errors even if there are a lot of them–num-callers=50
: to increase the maximum backtrace displayedMemory checker (default tool).
Syntax: valgrind [–tool=memcheck] [options] <your-program> <args>
–leak-check=full
: to completely analyse memory leaks–show-reachable=yes
: to show the detail of reachable memory–track-origins=yes
: to display where was allocated the “uninitialized value”Memory profiling.
Syntax: valgrind –tool=massif [options] <your-program> <args> ; ms_print massif.<pid>
–time-unit=B
: display results in bytesPerformance profiling, to find time taken in functions and number of calls of functions.
Syntax: valgrind –tool=callgrind <program-compiled-O2> <args> ; kcachegrind callgrind.out.xxxx ; calgrind_control
CPU cache profiling, to find cache misses.
Syntax: valgrind –tool=cachegrind <program-compiled-O2> <args>
Always do profiling with optimization options of compiler, or you could optimize things that the compiler already automatically does.