mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-08 00:16:11 +00:00
88 lines
3.0 KiB
XML
88 lines
3.0 KiB
XML
<?xml version="1.0"?> <!-- -*- sgml -*- -->
|
|
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
|
|
[ <!ENTITY % vg-entities SYSTEM "../../docs/xml/vg-entities.xml"> %vg-entities; ]>
|
|
|
|
|
|
<chapter id="design-impl"
|
|
xreflabel="The design and implementation of Valgrind">
|
|
|
|
<title>The Design and Implementation of Valgrind</title>
|
|
|
|
|
|
<para>A number of academic publications nicely describe many aspects
|
|
of Valgrind's design and implementation. Online copies of all of
|
|
them, and others, are available on the <ulink url="&vg-pubs-url;">Valgrind
|
|
publications page</ulink>.</para>
|
|
|
|
<para>The following paper gives a good overview of Valgrind, and explains
|
|
how it differs from other dynamic binary instrumentation frameworks such as
|
|
Pin and DynamoRIO.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<command>Valgrind: A Framework for Heavyweight Dynamic Binary
|
|
Instrumentation. Nicholas Nethercote and Julian Seward. Proceedings
|
|
of ACM SIGPLAN 2007 Conference on Programming Language Design and
|
|
Implementation (PLDI 2007), San Diego, California, USA, June
|
|
2007.</command>
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
|
|
<para>The following two papers together give a comprehensive description of
|
|
how most of Memcheck works. The first paper describes in detail how
|
|
Memcheck's undefined value error detection (a.k.a. V bits) works. The
|
|
second paper describes in detail how Memcheck's shadow memory is
|
|
implemented, and compares it to other alternative approaches.
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><command>Using Valgrind to detect undefined value errors with
|
|
bit-precision. Julian Seward and Nicholas Nethercote. Proceedings
|
|
of the USENIX'05 Annual Technical Conference, Anaheim, California,
|
|
USA, April 2005.</command>
|
|
</para>
|
|
|
|
<para><command>How to Shadow Every Byte of Memory Used by a Program.
|
|
Nicholas Nethercote and Julian Seward. Proceedings of the Third
|
|
International ACM SIGPLAN/SIGOPS Conference on Virtual Execution
|
|
Environments (VEE 2007), San Diego, California, USA, June
|
|
2007.</command>
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
|
|
<para>The following paper describes Callgrind.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><command>A Tool Suite for Simulation Based Analysis of Memory Access
|
|
Behavior. Josef Weidendorfer, Markus Kowarschik and Carsten
|
|
Trinitis. Proceedings of the 4th International Conference on
|
|
Computational Science (ICCS 2004), Krakow, Poland, June 2004.</command>
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>The following dissertation describes Valgrind in some detail
|
|
(many of these details are now out-of-date) as well as Cachegrind,
|
|
Annelid and Redux. It also covers some underlying theory about
|
|
dynamic binary analysis in general and what all these tools have in
|
|
common.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><command>Dynamic Binary Analysis and Instrumentation. Nicholas
|
|
Nethercote.</command> PhD Dissertation, University of Cambridge, November
|
|
2004.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
|
|
</chapter>
|