Merge (from 3.2 branch) r6743 (Edit the manual to bring it up to date
and make some of the wording a bit more professional sounding.)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6745 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/docs/xml/manual-intro.xml b/docs/xml/manual-intro.xml
index eac13d6..a4b1b84 100644
--- a/docs/xml/manual-intro.xml
+++ b/docs/xml/manual-intro.xml
@@ -23,7 +23,7 @@
<listitem>
<para><command>Memcheck</command> detects memory-management problems
- in your programs. All reads and writes of memory are checked, and
+ in programs. All reads and writes of memory are checked, and
calls to malloc/new/free/delete are intercepted. As a result,
Memcheck can detect the following problems:</para>
@@ -59,7 +59,7 @@
</itemizedlist>
<para>Problems like these can be difficult to find by other means,
- often lying undetected for long periods, then causing occasional,
+ often remaining undetected for long periods, then causing occasional,
difficult-to-diagnose crashes.</para>
</listitem>
@@ -67,46 +67,43 @@
<para><command>Cachegrind</command> is a cache profiler. It
performs detailed simulation of the I1, D1 and L2 caches in your CPU
and so can accurately pinpoint the sources of cache misses in your
- code. If you desire, it will show the number of cache misses,
+ code. It will show the number of cache misses,
memory references and instructions accruing to each line of source
code, with per-function, per-module and whole-program summaries. If
you ask really nicely it will even show counts for each individual
machine instruction.</para>
- <para>On x86 and AMD64, Cachegrind auto-detects your machine's cache
+ <para>On x86 and and64, Cachegrind auto-detects your machine's cache
configuration using the <computeroutput>CPUID</computeroutput>
instruction, and so needs no further configuration info, in most
cases.</para>
-
- <para>Cachegrind is nicely complemented by Josef Weidendorfer's
- amazing KCacheGrind visualisation tool
- (<ulink url="http://kcachegrind.sourceforge.net/cgi-bin/show.cgi/KcacheGrindIndex">http://kcachegrind.sourceforge.net</ulink>),
- a KDE application which presents these profiling results in a
- graphical and easier-to-understand form.</para>
</listitem>
<listitem>
- <para><command>Helgrind</command> finds data races in multithreaded
- programs. Helgrind looks for memory locations which are accessed by
- more than one (POSIX p-)thread, but for which no consistently used
- (pthread_mutex_)lock can be found. Such locations are indicative of
- missing synchronisation between threads, and could cause
- hard-to-find timing-dependent problems.</para>
+ <para><command>Callgrind</command> is a profiler similar in
+ concept to Cachegrind, but which also tracks caller-callee
+ relationships. By doing so it is able to show how instruction,
+ memory reference and cache miss costs flow between callers and
+ callees. Callgrind collects a large amount of data which is best
+ navigated using Josef Weidendorfer's amazing KCachegrind
+ visualisation tool (<ulink
+ url="http://kcachegrind.sourceforge.net/cgi-bin/show.cgi/KcacheGrindIndex">http://kcachegrind.sourceforge.net</ulink>).
+ KCachegrind is a KDE application which presents
+ these profiling results in a
+ graphical and easy-to-understand form.</para>
+ </listitem>
- <para>Helgrind ("Hell's Gate", in Norse mythology) implements the
- so-called "Eraser" data-race-detection algorithm, along with various
- refinements (thread-segment lifetimes) which reduce the number of
- false errors it reports. It is as yet somewhat of an experimental
- tool, so your feedback is especially welcomed here.</para>
+ <listitem>
+ <para><command>Massif</command> is a heap profiler.
+ It measures how much heap memory programs use. In particular,
+ it can give you information about heap blocks, heap
+ administration overheads, and stack sizes.</para>
- <para>Helgrind has been hacked on extensively by Jeremy
- Fitzhardinge, and we have him to thank for getting it to a
- releasable state.</para>
-
- <para>NOTE: Helgrind is, unfortunately, not available in Valgrind
- 3.2.X, as a result of threading changes that happened in the 2.4.0
- release. We hope to reinstate its functionality in the future.
- </para>
+ <para>Heap profiling can help you reduce the amount of
+ memory your program uses. On modern machines with virtual
+ memory, this reduces the chances that your program will run out
+ of memory, and may make it faster by reducing the amount of
+ paging needed.</para>
</listitem>
</orderedlist>
@@ -123,13 +120,12 @@
<para>Valgrind is closely tied to details of the CPU and operating
system, and to a lesser extent, the compiler and basic C libraries.
Nonetheless, as of version 3.2.0 it supports several platforms:
-x86/Linux (mature), AMD64/Linux (maturing), PPC32/Linux and
-PPC64/Linux (less mature but work well in practice).
-Valgrind uses the standard Unix
+x86/Linux (mature), amd64/Linux (maturing), ppc32/Linux and
+ppc64/Linux (less mature but work well). Valgrind uses the standard Unix
<computeroutput>./configure</computeroutput>,
<computeroutput>make</computeroutput>, <computeroutput>make
install</computeroutput> mechanism, and we have attempted to ensure that
-it works on machines with kernel 2.4 or 2.6 and glibc
+it works on machines with Linux kernel 2.4.X or 2.6.X and glibc
2.2.X to 2.5.X.</para>
<para>Valgrind is licensed under the <xref linkend="license.gpl"/>,
@@ -150,7 +146,7 @@
<title>How to navigate this manual</title>
<para>The Valgrind distribution consists of the Valgrind core, upon
-which are built Valgrind tools, which do different kinds of debugging
+which are built Valgrind tools. The tools do different kinds of debugging
and profiling. This manual is structured similarly.</para>
<para>First, we describe the Valgrind core, how to use it, and the flags