blob: 60ee523a7980bd065a68e7f8cf2f8c6dd6e32cad [file] [log] [blame]
njne43d3ae2003-05-05 13:04:49 +00001
njne43d3ae2003-05-05 13:04:49 +00002Building and not installing it
3~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
njne43d3ae2003-05-05 13:04:49 +00004
njn090dc842005-03-12 16:47:07 +00005To run Valgrind without having to install it, run coregrind/valgrind
sewardj45f4e7c2005-09-27 19:20:21 +00006with the VALGRIND_LIB environment variable set, where <dir> is the root
njn090dc842005-03-12 16:47:07 +00007of the source tree (and must be an absolute path). Eg:
8
sewardj45f4e7c2005-09-27 19:20:21 +00009 VALGRIND_LIB=~/grind/head4/.in_place ~/grind/head4/coregrind/valgrind
njne43d3ae2003-05-05 13:04:49 +000010
11This allows you to compile and run with "make" instead of "make install",
12saving you time.
13
14I recommend compiling with "make --quiet" to further reduce the amount of
15output spewed out during compilation, letting you actually see any errors,
16warnings, etc.
17
18
19Running the regression tests
20~~~~~~~~~~~~~~~~~~~~~~~~~~~~
21To build and run all the regression tests, run "make [--quiet] regtest".
22
23To run a subset of the regression tests, execute:
24
25 perl tests/vg_regtest <name>
26
27where <name> is a directory (all tests within will be run) or a single
28.vgtest test file, or the name of a program which has a like-named .vgtest
29file. Eg:
30
31 perl tests/vg_regtest memcheck
32 perl tests/vg_regtest memcheck/tests/badfree.vgtest
33 perl tests/vg_regtest memcheck/tests/badfree
34
nethercote16b59ee2004-10-09 15:59:05 +000035
36Debugging Valgrind with GDB
37~~~~~~~~~~~~~~~~~~~~~~~~~~~
nethercote4fffabd2004-11-02 09:13:12 +000038To debug stage 1 just run it under GDB in the normal way.
39
40To debug Valgrind proper (stage 2) with GDB, start Valgrind like this:
nethercote16b59ee2004-10-09 15:59:05 +000041
42 valgrind --tool=none --wait-for-gdb=yes <prog>
43
44Then start gdb like this in another terminal:
45
46 gdb /usr/lib/valgrind/stage2 <pid>
47
48Where <pid> is the pid valgrind printed. Then set whatever breakpoints
49you want and do this in gdb:
50
51 jump *$eip
52
njn585b8b32005-10-10 11:36:55 +000053
54Self-hosting
55~~~~~~~~~~~~
56To run Valgrind under Valgrind:
57
58(1) Check out 2 trees, "inner" and "outer". "inner" runs the app
59 directly and is what you will be profiling. "outer" does the
60 profiling.
61
62(2) Configure inner with --enable-inner and build/install as
63 usual.
64
65(3) Configure outer normally and build/install as usual.
66
67(4) Choose a very simple program (date) and try
68
69 outer/.../bin/valgrind --weird-hacks=enable-outer \
70 --tool=cachegrind -v inner/.../bin/valgrind --tool=none -v prog
71
72It's fragile, confusing and slow, but it does work well enough for
73you to get some useful performance data. At the time of writing
74the allocator is not annotated with client requests so Memcheck is
75not as useful as it could be.