| <?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> |