sewardj | 14132a1 | 2007-11-22 01:07:57 +0000 | [diff] [blame] | 1 | <?xml version="1.0"?> <!-- -*- sgml -*- --> |
| 2 | <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" |
njn | c46019e | 2009-08-07 04:07:20 +0000 | [diff] [blame] | 3 | "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" |
| 4 | [ <!ENTITY % vg-entities SYSTEM "../../docs/xml/vg-entities.xml"> %vg-entities; ]> |
sewardj | 14132a1 | 2007-11-22 01:07:57 +0000 | [diff] [blame] | 5 | |
| 6 | |
njn | 8b68b64 | 2009-06-24 00:37:09 +0000 | [diff] [blame] | 7 | <chapter id="design-impl" |
sewardj | 14132a1 | 2007-11-22 01:07:57 +0000 | [diff] [blame] | 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 |
| 14 | of Valgrind's design and implementation. Online copies of all of |
njn | c46019e | 2009-08-07 04:07:20 +0000 | [diff] [blame] | 15 | them, and others, are available on the <ulink url="&vg-pubs-url;">Valgrind |
| 16 | publications page</ulink>.</para> |
sewardj | 14132a1 | 2007-11-22 01:07:57 +0000 | [diff] [blame] | 17 | |
njn | c46019e | 2009-08-07 04:07:20 +0000 | [diff] [blame] | 18 | <para>The following paper gives a good overview of Valgrind, and explains |
| 19 | how it differs from other dynamic binary instrumentation frameworks such as |
| 20 | Pin and DynamoRIO.</para> |
sewardj | 14132a1 | 2007-11-22 01:07:57 +0000 | [diff] [blame] | 21 | |
njn | c46019e | 2009-08-07 04:07:20 +0000 | [diff] [blame] | 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> |
sewardj | 14132a1 | 2007-11-22 01:07:57 +0000 | [diff] [blame] | 33 | |
| 34 | |
njn | c46019e | 2009-08-07 04:07:20 +0000 | [diff] [blame] | 35 | <para>The following two papers together give a comprehensive description of |
| 36 | how most of Memcheck works. The first paper describes in detail how |
| 37 | Memcheck's undefined value error detection (a.k.a. V bits) works. The |
| 38 | second paper describes in detail how Memcheck's shadow memory is |
| 39 | implemented, and compares it to other alternative approaches. |
| 40 | </para> |
sewardj | 14132a1 | 2007-11-22 01:07:57 +0000 | [diff] [blame] | 41 | |
njn | c46019e | 2009-08-07 04:07:20 +0000 | [diff] [blame] | 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> |
sewardj | 14132a1 | 2007-11-22 01:07:57 +0000 | [diff] [blame] | 49 | |
njn | c46019e | 2009-08-07 04:07:20 +0000 | [diff] [blame] | 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> |
sewardj | 14132a1 | 2007-11-22 01:07:57 +0000 | [diff] [blame] | 58 | |
| 59 | |
njn | c46019e | 2009-08-07 04:07:20 +0000 | [diff] [blame] | 60 | <para>The following paper describes Callgrind.</para> |
sewardj | 14132a1 | 2007-11-22 01:07:57 +0000 | [diff] [blame] | 61 | |
njn | c46019e | 2009-08-07 04:07:20 +0000 | [diff] [blame] | 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> |
sewardj | 14132a1 | 2007-11-22 01:07:57 +0000 | [diff] [blame] | 71 | |
| 72 | <para>The following dissertation describes Valgrind in some detail |
njn | c46019e | 2009-08-07 04:07:20 +0000 | [diff] [blame] | 73 | (many of these details are now out-of-date) as well as Cachegrind, |
sewardj | 14132a1 | 2007-11-22 01:07:57 +0000 | [diff] [blame] | 74 | Annelid and Redux. It also covers some underlying theory about |
| 75 | dynamic binary analysis in general and what all these tools have in |
njn | c46019e | 2009-08-07 04:07:20 +0000 | [diff] [blame] | 76 | common.</para> |
sewardj | 14132a1 | 2007-11-22 01:07:57 +0000 | [diff] [blame] | 77 | |
njn | c46019e | 2009-08-07 04:07:20 +0000 | [diff] [blame] | 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> |
sewardj | 14132a1 | 2007-11-22 01:07:57 +0000 | [diff] [blame] | 85 | |
| 86 | |
| 87 | </chapter> |