<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crashpad: crashpad::MachOImageAnnotationsReader Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="crashpad_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Crashpad
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespacecrashpad.html">crashpad</a></li><li class="navelem"><a class="el" href="classcrashpad_1_1MachOImageAnnotationsReader.html">MachOImageAnnotationsReader</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classcrashpad_1_1MachOImageAnnotationsReader-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">crashpad::MachOImageAnnotationsReader Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>A reader for annotations stored in a Mach-O image mapped into another process.  
 <a href="classcrashpad_1_1MachOImageAnnotationsReader.html#details">More...</a></p>

<p><code>#include &quot;snapshot/mac/mach_o_image_annotations_reader.h&quot;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a6548dad91b8da822cc756601f59098e0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1MachOImageAnnotationsReader.html#a6548dad91b8da822cc756601f59098e0">MachOImageAnnotationsReader</a> (<a class="el" href="classcrashpad_1_1ProcessReaderMac.html">ProcessReaderMac</a> *process_reader, const <a class="el" href="classcrashpad_1_1MachOImageReader.html">MachOImageReader</a> *image_reader, const std::string &amp;name)</td></tr>
<tr class="memdesc:a6548dad91b8da822cc756601f59098e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs an object.  <a href="#a6548dad91b8da822cc756601f59098e0">More...</a><br /></td></tr>
<tr class="separator:a6548dad91b8da822cc756601f59098e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c99df9d2025ade3151f7fd726997e71"><td class="memItemLeft" align="right" valign="top"><a id="a4c99df9d2025ade3151f7fd726997e71"></a>
std::vector&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1MachOImageAnnotationsReader.html#a4c99df9d2025ade3151f7fd726997e71">Vector</a> () const</td></tr>
<tr class="memdesc:a4c99df9d2025ade3151f7fd726997e71"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the module’s annotations that are organized as a vector of strings. <br /></td></tr>
<tr class="separator:a4c99df9d2025ade3151f7fd726997e71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3fb601e274b10492addb9c4e7cecf28b"><td class="memItemLeft" align="right" valign="top"><a id="a3fb601e274b10492addb9c4e7cecf28b"></a>
std::map&lt; std::string, std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1MachOImageAnnotationsReader.html#a3fb601e274b10492addb9c4e7cecf28b">SimpleMap</a> () const</td></tr>
<tr class="memdesc:a3fb601e274b10492addb9c4e7cecf28b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the module’s annotations that are organized as key-value pairs, where all keys and values are strings. <br /></td></tr>
<tr class="separator:a3fb601e274b10492addb9c4e7cecf28b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a217afd11473e63d6c573611ab179752e"><td class="memItemLeft" align="right" valign="top"><a id="a217afd11473e63d6c573611ab179752e"></a>
std::vector&lt; <a class="el" href="structcrashpad_1_1AnnotationSnapshot.html">AnnotationSnapshot</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1MachOImageAnnotationsReader.html#a217afd11473e63d6c573611ab179752e">AnnotationsList</a> () const</td></tr>
<tr class="memdesc:a217afd11473e63d6c573611ab179752e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the module’s annotations that are organized as a list of. <br /></td></tr>
<tr class="separator:a217afd11473e63d6c573611ab179752e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A reader for annotations stored in a Mach-O image mapped into another process. </p>
<p>These annotations are stored for the benefit of crash reporters, and provide information thought to be potentially useful for crash analysis. This class can decode annotations stored in these formats:</p><ul>
<li><a class="el" href="structcrashpad_1_1CrashpadInfo.html" title="A structure that can be used by a Crashpad-enabled program to provide information to the Crashpad cra...">CrashpadInfo</a>. This format is used by Crashpad clients. The “simple annotations” are recovered from any module with a compatible data section, and are included in the annotations returned by <a class="el" href="classcrashpad_1_1MachOImageAnnotationsReader.html#a3fb601e274b10492addb9c4e7cecf28b" title="Returns the module’s annotations that are organized as key-value pairs, where all keys and values ar...">SimpleMap()</a>.</li>
<li><code>CrashReporterClient.h</code>’s <code>crashreporter_annotations_t</code>. This format is used by Apple code. The <code>message</code> and <code>message2</code> fields can be recovered from any module with a compatible data section, and are included in the annotations returned by <a class="el" href="classcrashpad_1_1MachOImageAnnotationsReader.html#a4c99df9d2025ade3151f7fd726997e71" title="Returns the module’s annotations that are organized as a vector of strings. ">Vector()</a>.</li>
<li><code>dyld</code>’s <code>error_string</code>. This format is used exclusively by dyld, typically for fatal errors. This string can be recovered from any <code>MH_DYLINKER</code>-type module with this symbol, and is included in the annotations returned by <a class="el" href="classcrashpad_1_1MachOImageAnnotationsReader.html#a4c99df9d2025ade3151f7fd726997e71" title="Returns the module’s annotations that are organized as a vector of strings. ">Vector()</a>. </li>
</ul>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a6548dad91b8da822cc756601f59098e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6548dad91b8da822cc756601f59098e0">&#9670;&nbsp;</a></span>MachOImageAnnotationsReader()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">crashpad::MachOImageAnnotationsReader::MachOImageAnnotationsReader </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classcrashpad_1_1ProcessReaderMac.html">ProcessReaderMac</a> *&#160;</td>
          <td class="paramname"><em>process_reader</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcrashpad_1_1MachOImageReader.html">MachOImageReader</a> *&#160;</td>
          <td class="paramname"><em>image_reader</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>name</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructs an object. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">process_reader</td><td>The reader for the remote process. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">image_reader</td><td>The <a class="el" href="classcrashpad_1_1MachOImageReader.html" title="A reader for Mach-O images mapped into another process. ">MachOImageReader</a> for the Mach-O image file contained within the remote process. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">name</td><td>The module’s name, a string to be used in logged messages. This string is for diagnostic purposes only, and may be empty. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>snapshot/mac/mach_o_image_annotations_reader.h</li>
<li>snapshot/mac/mach_o_image_annotations_reader.cc</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>
