mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 18:13:01 +00:00
100 lines
3.7 KiB
Plaintext
100 lines
3.7 KiB
Plaintext
|
|
Release notes for Valgrind, snapshot 20020217
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
KDE3 developers: please read also README_KDE3_FOLKS for guidance
|
|
about how to debug KDE3 applications with Valgrind.
|
|
|
|
For instructions on how to build/install, see the end of this file.
|
|
|
|
|
|
Executive Summary
|
|
~~~~~~~~~~~~~~~~~
|
|
Valgrind is a tool to help you find memory-management problems in your
|
|
programs. When a program is run under Valgrind's supervision, all
|
|
reads and writes of memory are checked, and calls to
|
|
malloc/new/free/delete are intercepted. As a result, Valgrind can
|
|
detect problems such as:
|
|
|
|
Use of uninitialised memory
|
|
Reading/writing memory after it has been free'd
|
|
Reading/writing off the end of malloc'd blocks
|
|
Reading/writing inappropriate areas on the stack
|
|
Memory leaks -- where pointers to malloc'd blocks are lost forever
|
|
Passing of uninitialised and/or unaddressible memory to system calls
|
|
Mismatched use of malloc/new/new [] vs free/delete/delete []
|
|
|
|
Problems like these can be difficult to find by other means, often
|
|
lying undetected for long periods, then causing occasional,
|
|
difficult-to-diagnose crashes.
|
|
|
|
When Valgrind detects such a problem, it can, if you like, attach GDB
|
|
to your program, so you can poke around and see what's going on.
|
|
|
|
Valgrind is closely tied to details of the CPU, operating system and
|
|
to a less extent, compiler and basic C libraries. This makes it
|
|
difficult to make it portable, so I have chosen at the outset to
|
|
concentrate on what I believe to be a widely used platform: Red Hat
|
|
Linux 7.2, on x86s. I believe that it will work without significant
|
|
difficulty on other x86 GNU/Linux systems which use the 2.4 kernel and
|
|
GNU libc 2.2.X, for example SuSE 7.1 and Mandrake 8.0. Red Hat 6.2 is
|
|
also supported. It has worked in the past, and probably still does,
|
|
on RedHat 7.1 and 6.2. Note that I haven't compiled it on RedHat 7.1
|
|
and 6.2 for a while, so they may no longer work now.
|
|
|
|
Valgrind is licensed under the GNU General Public License, version 2.
|
|
Read the file LICENSE in the source distribution for details.
|
|
|
|
|
|
Documentation
|
|
~~~~~~~~~~~~~
|
|
A comprehensive user guide is supplied. Point your browser at
|
|
docs/index.html. If your browser doesn't like frames, point it
|
|
instead at docs/manual.html.
|
|
|
|
|
|
Building and installing it
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
If you install from CVS :
|
|
|
|
0. cd into the source directory
|
|
|
|
1. Run ./autogen.sh to setup the environment (you need the standard
|
|
autoconf tools to do so)
|
|
|
|
If you install from a tar.gz archive:
|
|
|
|
2. Run ./configure, with some options if you wish. The standard
|
|
options are documented in the INSTALL file.
|
|
|
|
3. Do "make"
|
|
|
|
4. As root, do "make install"
|
|
|
|
5. See if it works. Try "valgrind ls -l". Either this works,
|
|
or it bombs out complaining it can't find argc/argv/envp.
|
|
If this happens, you'll have to futz around with
|
|
vg_main.c:710 to vg_main.c:790 to try and find suitable offsets.
|
|
It's not hard; many have been successful here.
|
|
|
|
Once step 5 is successful, you can now use valgrind. Documentation
|
|
is in docs/manual.html. The following auxiliary steps may enhance
|
|
your valgrinding experience, though.
|
|
|
|
6. Create a file containing enough suppressions so that
|
|
|
|
valgrind xedit
|
|
|
|
runs without generating any errors. This means you've more
|
|
or less suppressed all the scummy errors from the X11 base
|
|
libraries and from glibc, which will make it easier to spot
|
|
genuine errors in your own code. The default.supp file
|
|
should contains a good starting point. Do *not* edit this file
|
|
however, as it will be overwritten at the next installation of
|
|
valgrind, but create your own local.supp file.
|
|
|
|
|
|
Julian Seward (jseward@acm.org)
|
|
15 Feb 2002
|