crashpad/doc/generated/doxygen/classcrashpad_1_1CrashReportExceptionHandler.html
2016-11-07 15:21:37 -05:00

268 lines
18 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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.12"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crashpad: crashpad::CrashReportExceptionHandler 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" />
</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.12 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</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_1CrashReportExceptionHandler.html">CrashReportExceptionHandler</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_1CrashReportExceptionHandler-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">crashpad::CrashReportExceptionHandler Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>An exception handler that writes crash reports for exception messages to a <a class="el" href="classcrashpad_1_1CrashReportDatabase.html" title="An interface for managing a collection of crash report files and metadata associated with the crash r...">CrashReportDatabase</a>.
<a href="classcrashpad_1_1CrashReportExceptionHandler.html#details">More...</a></p>
<p><code>#include &quot;handler/win/crash_report_exception_handler.h&quot;</code></p>
<div class="dynheader">
Inheritance diagram for crashpad::CrashReportExceptionHandler:</div>
<div class="dyncontent">
<div class="center">
<img src="classcrashpad_1_1CrashReportExceptionHandler.png" usemap="#crashpad::CrashReportExceptionHandler_map" alt=""/>
<map id="crashpad::CrashReportExceptionHandler_map" name="crashpad::CrashReportExceptionHandler_map">
<area href="classcrashpad_1_1ExceptionHandlerServer_1_1Delegate.html" alt="crashpad::ExceptionHandlerServer::Delegate" shape="rect" coords="0,0,272,24"/>
<area href="classcrashpad_1_1UniversalMachExcServer_1_1Interface.html" title="An interface that the different request messages that are a part of the exc and mach_exc Mach subsyst..." alt="crashpad::UniversalMachExcServer::Interface" shape="rect" coords="282,0,554,24"/>
</map>
</div></div>
<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:a2fe8372e1fb97b8adf2f6b7577e8f029"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashReportExceptionHandler.html#a2fe8372e1fb97b8adf2f6b7577e8f029">CrashReportExceptionHandler</a> (<a class="el" href="classcrashpad_1_1CrashReportDatabase.html">CrashReportDatabase</a> *database, <a class="el" href="classcrashpad_1_1CrashReportUploadThread.html">CrashReportUploadThread</a> *upload_thread, const std::map&lt; std::string, std::string &gt; *process_annotations)</td></tr>
<tr class="memdesc:a2fe8372e1fb97b8adf2f6b7577e8f029"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new object that will store crash reports in <em>database</em>. <a href="#a2fe8372e1fb97b8adf2f6b7577e8f029">More...</a><br /></td></tr>
<tr class="separator:a2fe8372e1fb97b8adf2f6b7577e8f029"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98ecf7abdf0a99fe30b6fa7116649bee"><td class="memItemLeft" align="right" valign="top"><a id="a98ecf7abdf0a99fe30b6fa7116649bee"></a>
kern_return_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashReportExceptionHandler.html#a98ecf7abdf0a99fe30b6fa7116649bee">CatchMachException</a> (exception_behavior_t behavior, exception_handler_t exception_port, thread_t thread, task_t task, exception_type_t exception, const mach_exception_data_type_t *code, mach_msg_type_number_t code_count, thread_state_flavor_t *flavor, <a class="el" href="namespacecrashpad.html#a72fa9ea632f7f1ec93ec3c1b1d300db6">ConstThreadState</a> old_state, mach_msg_type_number_t old_state_count, thread_state_t new_state, mach_msg_type_number_t *new_state_count, const mach_msg_trailer_t *trailer, bool *destroy_complex_request) override</td></tr>
<tr class="memdesc:a98ecf7abdf0a99fe30b6fa7116649bee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Processes an exception message by writing a crash report to this objects <a class="el" href="classcrashpad_1_1CrashReportDatabase.html" title="An interface for managing a collection of crash report files and metadata associated with the crash r...">CrashReportDatabase</a>. <br /></td></tr>
<tr class="separator:a98ecf7abdf0a99fe30b6fa7116649bee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2fe8372e1fb97b8adf2f6b7577e8f029"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashReportExceptionHandler.html#a2fe8372e1fb97b8adf2f6b7577e8f029">CrashReportExceptionHandler</a> (<a class="el" href="classcrashpad_1_1CrashReportDatabase.html">CrashReportDatabase</a> *database, <a class="el" href="classcrashpad_1_1CrashReportUploadThread.html">CrashReportUploadThread</a> *upload_thread, const std::map&lt; std::string, std::string &gt; *process_annotations)</td></tr>
<tr class="memdesc:a2fe8372e1fb97b8adf2f6b7577e8f029"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new object that will store crash reports in <em>database</em>. <a href="#a2fe8372e1fb97b8adf2f6b7577e8f029">More...</a><br /></td></tr>
<tr class="separator:a2fe8372e1fb97b8adf2f6b7577e8f029"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aced3c98628a1f723dbd7952f8e3b421f"><td class="memItemLeft" align="right" valign="top"><a id="aced3c98628a1f723dbd7952f8e3b421f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashReportExceptionHandler.html#aced3c98628a1f723dbd7952f8e3b421f">ExceptionHandlerServerStarted</a> () override</td></tr>
<tr class="memdesc:aced3c98628a1f723dbd7952f8e3b421f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Processes an exception message by writing a crash report to this object's <a class="el" href="classcrashpad_1_1CrashReportDatabase.html" title="An interface for managing a collection of crash report files and metadata associated with the crash r...">CrashReportDatabase</a>. <br /></td></tr>
<tr class="separator:aced3c98628a1f723dbd7952f8e3b421f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1dcfab1bbc889f638b828bd5af296e62"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashReportExceptionHandler.html#a1dcfab1bbc889f638b828bd5af296e62">ExceptionHandlerServerException</a> (HANDLE process, <a class="el" href="namespacecrashpad.html#a368af6d88f68998b5c5eb80b8f6ebb76">WinVMAddress</a> exception_information_address, <a class="el" href="namespacecrashpad.html#a368af6d88f68998b5c5eb80b8f6ebb76">WinVMAddress</a> debug_critical_section_address) override</td></tr>
<tr class="memdesc:a1dcfab1bbc889f638b828bd5af296e62"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called when the client has signalled that it has encountered an exception and so wants a crash dump to be taken. <a href="#a1dcfab1bbc889f638b828bd5af296e62">More...</a><br /></td></tr>
<tr class="separator:a1dcfab1bbc889f638b828bd5af296e62"><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>An exception handler that writes crash reports for exception messages to a <a class="el" href="classcrashpad_1_1CrashReportDatabase.html" title="An interface for managing a collection of crash report files and metadata associated with the crash r...">CrashReportDatabase</a>. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a2fe8372e1fb97b8adf2f6b7577e8f029"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2fe8372e1fb97b8adf2f6b7577e8f029">&sect;&nbsp;</a></span>CrashReportExceptionHandler() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">crashpad::CrashReportExceptionHandler::CrashReportExceptionHandler </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classcrashpad_1_1CrashReportDatabase.html">CrashReportDatabase</a> *&#160;</td>
<td class="paramname"><em>database</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classcrashpad_1_1CrashReportUploadThread.html">CrashReportUploadThread</a> *&#160;</td>
<td class="paramname"><em>upload_thread</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::map&lt; std::string, std::string &gt; *&#160;</td>
<td class="paramname"><em>process_annotations</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a new object that will store crash reports in <em>database</em>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">database</td><td>The database to store crash reports in. Weak. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">upload_thread</td><td>The upload thread to notify when a new crash report is written into <em>database</em>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">process_annotations</td><td>A map of annotations to insert as process-level annotations into each crash report that is written. Do not confuse this with module-level annotations, which are under the control of the crashing process, and are used to implement Chromes “crash keys.” Process-level annotations are those that are beyond the control of the crashing process, which must reliably be set even if the process crashes before its able to establish its own annotations. To interoperate with Breakpad servers, the recommended practice is to specify values for the <code>"prod"</code> and <code>"ver"</code> keys as process annotations. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a2fe8372e1fb97b8adf2f6b7577e8f029"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2fe8372e1fb97b8adf2f6b7577e8f029">&sect;&nbsp;</a></span>CrashReportExceptionHandler() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">crashpad::CrashReportExceptionHandler::CrashReportExceptionHandler </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classcrashpad_1_1CrashReportDatabase.html">CrashReportDatabase</a> *&#160;</td>
<td class="paramname"><em>database</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classcrashpad_1_1CrashReportUploadThread.html">CrashReportUploadThread</a> *&#160;</td>
<td class="paramname"><em>upload_thread</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::map&lt; std::string, std::string &gt; *&#160;</td>
<td class="paramname"><em>process_annotations</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a new object that will store crash reports in <em>database</em>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">database</td><td>The database to store crash reports in. Weak. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">upload_thread</td><td>The upload thread to notify when a new crash report is written into <em>database</em>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">process_annotations</td><td>A map of annotations to insert as process-level annotations into each crash report that is written. Do not confuse this with module-level annotations, which are under the control of the crashing process, and are used to implement Chrome's "crash keys." Process-level annotations are those that are beyond the control of the crashing process, which must reliably be set even if the process crashes before it's able to establish its own annotations. To interoperate with Breakpad servers, the recommended practice is to specify values for the <code>"prod"</code> and <code>"ver"</code> keys as process annotations. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a1dcfab1bbc889f638b828bd5af296e62"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1dcfab1bbc889f638b828bd5af296e62">&sect;&nbsp;</a></span>ExceptionHandlerServerException()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int crashpad::CrashReportExceptionHandler::ExceptionHandlerServerException </td>
<td>(</td>
<td class="paramtype">HANDLE&#160;</td>
<td class="paramname"><em>process</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacecrashpad.html#a368af6d88f68998b5c5eb80b8f6ebb76">WinVMAddress</a>&#160;</td>
<td class="paramname"><em>exception_information_address</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacecrashpad.html#a368af6d88f68998b5c5eb80b8f6ebb76">WinVMAddress</a>&#160;</td>
<td class="paramname"><em>debug_critical_section_address</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Called when the client has signalled that it has encountered an exception and so wants a crash dump to be taken. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">process</td><td>A handle to the client process. Ownership of the lifetime of this handle is not passed to the delegate. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">exception_information_address</td><td>The address in the client's address space of an <a class="el" href="structcrashpad_1_1ExceptionInformation.html" title="Structure read out of the client process by the crash handler when an exception occurs. ">ExceptionInformation</a> structure. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">debug_critical_section_address</td><td>The address in the client's address space of a <code>CRITICAL_SECTION</code> allocated with a valid <code>.DebugInfo</code> field, or <code>0</code> if unavailable. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The exit code that should be used when terminating the client process. </dd></dl>
<p>Implements <a class="el" href="classcrashpad_1_1ExceptionHandlerServer_1_1Delegate.html#aa882e662bcede440ba8078edf4cbd14f">crashpad::ExceptionHandlerServer::Delegate</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>handler/mac/crash_report_exception_handler.h</li>
<li>handler/mac/crash_report_exception_handler.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.12
</small></address>
</body>
</html>