blob: 34fb10b0ca860c4d6d4a83e1bd5fed7a6302a109 [file] [log] [blame]
Building and not installing it
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To run Valgrind without having to install it, run coregrind/valgrind (prefix
with "sh" because it's not executable) with the --in-place=<dir> option, where
<dir> is the root of the source tree (and must be an absolute path). Eg:
sh ~/grind/head4/coregrind/valgrind --in-place=/homes/njn25/grind/head4
This allows you to compile and run with "make" instead of "make install",
saving you time.
I recommend compiling with "make --quiet" to further reduce the amount of
output spewed out during compilation, letting you actually see any errors,
warnings, etc.
Running the regression tests
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To build and run all the regression tests, run "make [--quiet] regtest".
To run a subset of the regression tests, execute:
perl tests/vg_regtest <name>
where <name> is a directory (all tests within will be run) or a single
.vgtest test file, or the name of a program which has a like-named .vgtest
file. Eg:
perl tests/vg_regtest memcheck
perl tests/vg_regtest memcheck/tests/badfree.vgtest
perl tests/vg_regtest memcheck/tests/badfree
Debugging Valgrind with GDB
~~~~~~~~~~~~~~~~~~~~~~~~~~~
To debug stage 1 just run it under GDB in the normal way.
To debug Valgrind proper (stage 2) with GDB, start Valgrind like this:
valgrind --tool=none --wait-for-gdb=yes <prog>
Then start gdb like this in another terminal:
gdb /usr/lib/valgrind/stage2 <pid>
Where <pid> is the pid valgrind printed. Then set whatever breakpoints
you want and do this in gdb:
jump *$eip
Code that runs in the target program such as the pthread replacement
code or the malloc replacement code would have to be debugged as part
of the target program, probably by attaching a debugger after it has
started. We are not sure if this would work, however.