1<?xml version="1.0"?> <!-- -*- sgml -*- --> 2<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" 3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" 4[ <!ENTITY % vg-entities SYSTEM "../../docs/xml/vg-entities.xml"> %vg-entities; ]> 5 6 7<chapter id="design-impl" 8 xreflabel="The design and implementation of Valgrind"> 9 10<title>The Design and Implementation of Valgrind</title> 11 12 13<para>A number of academic publications nicely describe many aspects 14of Valgrind's design and implementation. Online copies of all of 15them, and others, are available on the <ulink url="&vg-pubs-url;">Valgrind 16publications page</ulink>.</para> 17 18<para>The following paper gives a good overview of Valgrind, and explains 19how it differs from other dynamic binary instrumentation frameworks such as 20Pin and DynamoRIO.</para> 21 22<itemizedlist> 23 <listitem> 24 <para> 25 <command>Valgrind: A Framework for Heavyweight Dynamic Binary 26 Instrumentation. Nicholas Nethercote and Julian Seward. Proceedings 27 of ACM SIGPLAN 2007 Conference on Programming Language Design and 28 Implementation (PLDI 2007), San Diego, California, USA, June 29 2007.</command> 30 </para> 31 </listitem> 32</itemizedlist> 33 34 35<para>The following two papers together give a comprehensive description of 36how most of Memcheck works. The first paper describes in detail how 37Memcheck's undefined value error detection (a.k.a. V bits) works. The 38second paper describes in detail how Memcheck's shadow memory is 39implemented, and compares it to other alternative approaches. 40</para> 41 42<itemizedlist> 43 <listitem> 44 <para><command>Using Valgrind to detect undefined value errors with 45 bit-precision. Julian Seward and Nicholas Nethercote. Proceedings 46 of the USENIX'05 Annual Technical Conference, Anaheim, California, 47 USA, April 2005.</command> 48 </para> 49 50 <para><command>How to Shadow Every Byte of Memory Used by a Program. 51 Nicholas Nethercote and Julian Seward. Proceedings of the Third 52 International ACM SIGPLAN/SIGOPS Conference on Virtual Execution 53 Environments (VEE 2007), San Diego, California, USA, June 54 2007.</command> 55 </para> 56 </listitem> 57</itemizedlist> 58 59 60<para>The following paper describes Callgrind.</para> 61 62<itemizedlist> 63 <listitem> 64 <para><command>A Tool Suite for Simulation Based Analysis of Memory Access 65 Behavior. Josef Weidendorfer, Markus Kowarschik and Carsten 66 Trinitis. Proceedings of the 4th International Conference on 67 Computational Science (ICCS 2004), Krakow, Poland, June 2004.</command> 68 </para> 69 </listitem> 70</itemizedlist> 71 72<para>The following dissertation describes Valgrind in some detail 73(many of these details are now out-of-date) as well as Cachegrind, 74Annelid and Redux. It also covers some underlying theory about 75dynamic binary analysis in general and what all these tools have in 76common.</para> 77 78<itemizedlist> 79 <listitem> 80 <para><command>Dynamic Binary Analysis and Instrumentation. Nicholas 81 Nethercote.</command> PhD Dissertation, University of Cambridge, November 82 2004.</para> 83 </listitem> 84</itemizedlist> 85 86 87</chapter> 88