21

Installation:

bzip2 -d valgrind-3.10.1.tar.bz2
tar -xf valgrind-3.10.1.tar 

then:

./configure
make
make install

or simplier

sudo apt-get install valgrind

How to run valgrind on that simple program example1.c

#include <stdlib.h>
int main()
{
    char *x = malloc(100); /* or, in C++, "char *x = new char[100] */
    return 0;
}

Run:

valgrind --tool=memcheck --leak-check=yes example1
valgrind: example1: command not found

Output from console:

valgrind: example1: command not found
andrew
  • 3,083
  • 4
  • 24
  • 29

2 Answers2

31

It looks good. You only need to add a ./ before your executable. Without it, valgrind fails to find it and reports 'command not found'.

valgrind --tool=memcheck --leak-check=yes ./example1
                                          ^
swalog
  • 4,403
  • 3
  • 32
  • 60
4

First, compile your C program (-g is extremely important; without debug info in the executable valgrind cannot tell you line numbers from the source code where the violations occur nor the original line of the allocations of the memory being violated.):

gcc -g example1.c -o example1

Then run valgrind on the executable:

valgrind --tool=memcheck --leak-check=yes ./example1
JohnH
  • 2,713
  • 12
  • 21