Home | History | Annotate | Download | only in html
      1 <html>
      2 <head>
      3 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
      4 <title>1.The Design and Implementation of Valgrind</title>
      5 <link rel="stylesheet" href="vg_basic.css" type="text/css">
      6 <meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
      7 <link rel="home" href="index.html" title="Valgrind Documentation">
      8 <link rel="up" href="tech-docs.html" title="Valgrind Technical Documentation">
      9 <link rel="prev" href="tech-docs.html" title="Valgrind Technical Documentation">
     10 <link rel="next" href="manual-writing-tools.html" title="2.Writing a New Valgrind Tool">
     11 </head>
     12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
     13 <div><table class="nav" width="100%" cellspacing="3" cellpadding="3" border="0" summary="Navigation header"><tr>
     14 <td width="22px" align="center" valign="middle"><a accesskey="p" href="tech-docs.html"><img src="images/prev.png" width="18" height="21" border="0" alt="Prev"></a></td>
     15 <td width="25px" align="center" valign="middle"><a accesskey="u" href="tech-docs.html"><img src="images/up.png" width="21" height="18" border="0" alt="Up"></a></td>
     16 <td width="31px" align="center" valign="middle"><a accesskey="h" href="index.html"><img src="images/home.png" width="27" height="20" border="0" alt="Up"></a></td>
     17 <th align="center" valign="middle">Valgrind Technical Documentation</th>
     18 <td width="22px" align="center" valign="middle"><a accesskey="n" href="manual-writing-tools.html"><img src="images/next.png" width="18" height="21" border="0" alt="Next"></a></td>
     19 </tr></table></div>
     20 <div class="chapter" title="1.The Design and Implementation of Valgrind">
     21 <div class="titlepage"><div><div><h2 class="title">
     22 <a name="design-impl"></a>1.The Design and Implementation of Valgrind</h2></div></div></div>
     23 <p>A number of academic publications nicely describe many aspects
     24 of Valgrind's design and implementation.  Online copies of all of
     25 them, and others, are available on the <a class="ulink" href="http://www.valgrind.org/docs/pubs.html" target="_top">Valgrind
     26 publications page</a>.</p>
     27 <p>The following paper gives a good overview of Valgrind, and explains
     28 how it differs from other dynamic binary instrumentation frameworks such as
     29 Pin and DynamoRIO.</p>
     30 <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
     31     <span class="command"><strong>Valgrind: A Framework for Heavyweight Dynamic Binary
     32     Instrumentation.  Nicholas Nethercote and Julian Seward.  Proceedings
     33     of ACM SIGPLAN 2007 Conference on Programming Language Design and
     34     Implementation (PLDI 2007), San Diego, California, USA, June
     35     2007.</strong></span>
     36     </p></li></ul></div>
     37 <p>The following two papers together give a comprehensive description of
     38 how most of Memcheck works.  The first paper describes in detail how
     39 Memcheck's undefined value error detection (a.k.a. V bits) works.  The
     40 second paper describes in detail how Memcheck's shadow memory is
     41 implemented, and compares it to other alternative approaches.
     42 </p>
     43 <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
     44 <p><span class="command"><strong>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.</strong></span>  
     48     </p>
     49 <p><span class="command"><strong>How to Shadow Every Byte of Memory Used by a Program.
     50     Nicholas Nethercote and Julian Seward.  Proceedings of the Third
     51     International ACM SIGPLAN/SIGOPS Conference on Virtual Execution
     52     Environments (VEE 2007), San Diego, California, USA, June
     53     2007.</strong></span>
     54     </p>
     55 </li></ul></div>
     56 <p>The following paper describes Callgrind.</p>
     57 <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><span class="command"><strong>A Tool Suite for Simulation Based Analysis of Memory Access
     58     Behavior.  Josef Weidendorfer, Markus Kowarschik and Carsten
     59     Trinitis.  Proceedings of the 4th International Conference on
     60     Computational Science (ICCS 2004), Krakow, Poland, June 2004.</strong></span>
     61     </p></li></ul></div>
     62 <p>The following dissertation describes Valgrind in some detail
     63 (many of these details are now out-of-date) as well as Cachegrind,
     64 Annelid and Redux.  It also covers some underlying theory about
     65 dynamic binary analysis in general and what all these tools have in
     66 common.</p>
     67 <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><span class="command"><strong>Dynamic Binary Analysis and Instrumentation.  Nicholas
     68     Nethercote.</strong></span>  PhD Dissertation, University of Cambridge, November
     69     2004.</p></li></ul></div>
     70 </div>
     71 <div>
     72 <br><table class="nav" width="100%" cellspacing="3" cellpadding="2" border="0" summary="Navigation footer">
     73 <tr>
     74 <td rowspan="2" width="40%" align="left">
     75 <a accesskey="p" href="tech-docs.html">&lt;&lt;Valgrind Technical Documentation</a></td>
     76 <td width="20%" align="center"><a accesskey="u" href="tech-docs.html">Up</a></td>
     77 <td rowspan="2" width="40%" align="right"><a accesskey="n" href="manual-writing-tools.html">2.Writing a New Valgrind Tool&gt;&gt;</a>
     78 </td>
     79 </tr>
     80 <tr><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td></tr>
     81 </table>
     82 </div>
     83 </body>
     84 </html>
     85