blob: b25909b5b7f5494b8ca9a9fb60d50bb03c4ade78 [file] [log] [blame]
<!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::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" />
<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_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"/>
<area href="classcrashpad_1_1ExceptionHandlerServer_1_1Delegate.html" alt="crashpad::ExceptionHandlerServer::Delegate" shape="rect" coords="564,0,836,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:a4f1186881c2b5093443624b4afedd592"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashReportExceptionHandler.html#a4f1186881c2b5093443624b4afedd592">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, const std::map&lt; std::string, base::FilePath &gt; *process_attachments, const UserStreamDataSources *user_stream_data_sources)</td></tr>
<tr class="memdesc:a4f1186881c2b5093443624b4afedd592"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new object that will store crash reports in <em>database</em>. <a href="#a4f1186881c2b5093443624b4afedd592">More...</a><br /></td></tr>
<tr class="separator:a4f1186881c2b5093443624b4afedd592"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5fba19c5a6e5168d1b88cfa18a407fd"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashReportExceptionHandler.html#af5fba19c5a6e5168d1b88cfa18a407fd">HandleException</a> (uint64_t process_id, uint64_t thread_id)</td></tr>
<tr class="memdesc:af5fba19c5a6e5168d1b88cfa18a407fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called when the exception handler server has caught an exception and wants a crash dump to be taken. <a href="#af5fba19c5a6e5168d1b88cfa18a407fd">More...</a><br /></td></tr>
<tr class="separator:af5fba19c5a6e5168d1b88cfa18a407fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a576db96df6f5a1e8315ad55222dfe46a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashReportExceptionHandler.html#a576db96df6f5a1e8315ad55222dfe46a">HandleExceptionHandles</a> (zx_handle_t process, zx_handle_t thread)</td></tr>
<tr class="memdesc:a576db96df6f5a1e8315ad55222dfe46a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called when the exception handler server has caught an exception and wants a crash dump to be taken. <a href="#a576db96df6f5a1e8315ad55222dfe46a">More...</a><br /></td></tr>
<tr class="separator:a576db96df6f5a1e8315ad55222dfe46a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a8370bde381637feb46d4095e047303"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashReportExceptionHandler.html#a8a8370bde381637feb46d4095e047303">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, const UserStreamDataSources *user_stream_data_sources)</td></tr>
<tr class="memdesc:a8a8370bde381637feb46d4095e047303"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new object that will store crash reports in <em>database</em>. <a href="#a8a8370bde381637feb46d4095e047303">More...</a><br /></td></tr>
<tr class="separator:a8a8370bde381637feb46d4095e047303"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3ec6f7e770c6c0db7a28c7c01471b7e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashReportExceptionHandler.html#ab3ec6f7e770c6c0db7a28c7c01471b7e">HandleException</a> (pid_t client_process_id, const <a class="el" href="structcrashpad_1_1ClientInformation.html">ClientInformation</a> &amp;info) override</td></tr>
<tr class="memdesc:ab3ec6f7e770c6c0db7a28c7c01471b7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on receipt of a crash dump request from a client. <a href="#ab3ec6f7e770c6c0db7a28c7c01471b7e">More...</a><br /></td></tr>
<tr class="separator:ab3ec6f7e770c6c0db7a28c7c01471b7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a784e5435c3b4761a8f6c175670d5eaf8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashReportExceptionHandler.html#a784e5435c3b4761a8f6c175670d5eaf8">HandleExceptionWithBroker</a> (pid_t client_process_id, const <a class="el" href="structcrashpad_1_1ClientInformation.html">ClientInformation</a> &amp;info, int broker_sock) override</td></tr>
<tr class="memdesc:a784e5435c3b4761a8f6c175670d5eaf8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on the receipt of a crash dump request from a client for a crash that should be mediated by a <a class="el" href="classcrashpad_1_1PtraceBroker.html" title="Implements a PtraceConnection over a socket. ">PtraceBroker</a>. <a href="#a784e5435c3b4761a8f6c175670d5eaf8">More...</a><br /></td></tr>
<tr class="separator:a784e5435c3b4761a8f6c175670d5eaf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a8370bde381637feb46d4095e047303"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashReportExceptionHandler.html#a8a8370bde381637feb46d4095e047303">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, const UserStreamDataSources *user_stream_data_sources)</td></tr>
<tr class="memdesc:a8a8370bde381637feb46d4095e047303"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new object that will store crash reports in <em>database</em>. <a href="#a8a8370bde381637feb46d4095e047303">More...</a><br /></td></tr>
<tr class="separator:a8a8370bde381637feb46d4095e047303"><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 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:a98ecf7abdf0a99fe30b6fa7116649bee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a8370bde381637feb46d4095e047303"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashReportExceptionHandler.html#a8a8370bde381637feb46d4095e047303">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, const UserStreamDataSources *user_stream_data_sources)</td></tr>
<tr class="memdesc:a8a8370bde381637feb46d4095e047303"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new object that will store crash reports in <em>database</em>. <a href="#a8a8370bde381637feb46d4095e047303">More...</a><br /></td></tr>
<tr class="separator:a8a8370bde381637feb46d4095e047303"><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>
<p>An exception handler that writes crash reports for exceptions 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="a4f1186881c2b5093443624b4afedd592"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4f1186881c2b5093443624b4afedd592">&#9670;&nbsp;</a></span>CrashReportExceptionHandler() <span class="overload">[1/4]</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>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::map&lt; std::string, base::FilePath &gt; *&#160;</td>
<td class="paramname"><em>process_attachments</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const UserStreamDataSources *&#160;</td>
<td class="paramname"><em>user_stream_data_sources</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>
<tr><td class="paramdir">[in]</td><td class="paramname">process_attachments</td><td>A map of file name keys to file paths to be included in the report. Each time a report is written, the file paths will be read in their entirety and included in the report using the file name key as the name in the http upload. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">user_stream_data_sources</td><td>Data sources to be used to extend crash reports. For each crash report that is written, the data sources are called in turn. These data sources may contribute additional minidump streams. <code>nullptr</code> if not required. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a8a8370bde381637feb46d4095e047303"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8a8370bde381637feb46d4095e047303">&#9670;&nbsp;</a></span>CrashReportExceptionHandler() <span class="overload">[2/4]</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>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const UserStreamDataSources *&#160;</td>
<td class="paramname"><em>user_stream_data_sources</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>. Report upload is skipped if this value is <code>nullptr</code>. </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>
<tr><td class="paramdir">[in]</td><td class="paramname">user_stream_data_sources</td><td>Data sources to be used to extend crash reports. For each crash report that is written, the data sources are called in turn. These data sources may contribute additional minidump streams. <code>nullptr</code> if not required. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a8a8370bde381637feb46d4095e047303"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8a8370bde381637feb46d4095e047303">&#9670;&nbsp;</a></span>CrashReportExceptionHandler() <span class="overload">[3/4]</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>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const UserStreamDataSources *&#160;</td>
<td class="paramname"><em>user_stream_data_sources</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>. Report upload is skipped if this value is <code>nullptr</code>. </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>
<tr><td class="paramdir">[in]</td><td class="paramname">user_stream_data_sources</td><td>Data sources to be used to extend crash reports. For each crash report that is written, the data sources are called in turn. These data sources may contribute additional minidump streams. <code>nullptr</code> if not required. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a8a8370bde381637feb46d4095e047303"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8a8370bde381637feb46d4095e047303">&#9670;&nbsp;</a></span>CrashReportExceptionHandler() <span class="overload">[4/4]</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>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const UserStreamDataSources *&#160;</td>
<td class="paramname"><em>user_stream_data_sources</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>. Report upload is skipped if this value is <code>nullptr</code>. </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>
<tr><td class="paramdir">[in]</td><td class="paramname">user_stream_data_sources</td><td>Data sources to be used to extend crash reports. For each crash report that is written, the data sources are called in turn. These data sources may contribute additional minidump streams. <code>nullptr</code> if not required. </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">&#9670;&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>
<a id="ab3ec6f7e770c6c0db7a28c7c01471b7e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab3ec6f7e770c6c0db7a28c7c01471b7e">&#9670;&nbsp;</a></span>HandleException() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool crashpad::CrashReportExceptionHandler::HandleException </td>
<td>(</td>
<td class="paramtype">pid_t&#160;</td>
<td class="paramname"><em>client_process_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structcrashpad_1_1ClientInformation.html">ClientInformation</a> &amp;&#160;</td>
<td class="paramname"><em>info</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 on receipt of a crash dump request from a client. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">client_process_id</td><td>The process ID of the crashing client. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">info</td><td>Information on the client. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on success. <code>false</code> on failure with a message logged. </dd></dl>
<p>Implements <a class="el" href="classcrashpad_1_1ExceptionHandlerServer_1_1Delegate.html#a2a914e6fc5649ff45a04450981d02e4b">crashpad::ExceptionHandlerServer::Delegate</a>.</p>
</div>
</div>
<a id="af5fba19c5a6e5168d1b88cfa18a407fd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af5fba19c5a6e5168d1b88cfa18a407fd">&#9670;&nbsp;</a></span>HandleException() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool crashpad::CrashReportExceptionHandler::HandleException </td>
<td>(</td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>process_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>thread_id</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called when the exception handler server has caught an exception and wants a crash dump to be taken. </p>
<p>This function is expected to call <code>zx_task_resume()</code> in order to complete handling of the exception.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">process_id</td><td>The koid of the process which sustained the exception. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">thread_id</td><td>The koid of the thread which sustained the exception. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on success, or <code>false</code> with an error logged. </dd></dl>
</div>
</div>
<a id="a576db96df6f5a1e8315ad55222dfe46a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a576db96df6f5a1e8315ad55222dfe46a">&#9670;&nbsp;</a></span>HandleExceptionHandles()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool crashpad::CrashReportExceptionHandler::HandleExceptionHandles </td>
<td>(</td>
<td class="paramtype">zx_handle_t&#160;</td>
<td class="paramname"><em>process</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">zx_handle_t&#160;</td>
<td class="paramname"><em>thread</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called when the exception handler server has caught an exception and wants a crash dump to be taken. </p>
<p>This function is expected to call <code>zx_task_resume()</code> in order to complete handling of the exception.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">process</td><td>The handle to the process which sustained the exception. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">thread</td><td>The handle to the thread of <em>process</em> which sustained the exception. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on success, or <code>false</code> with an error logged. </dd></dl>
</div>
</div>
<a id="a784e5435c3b4761a8f6c175670d5eaf8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a784e5435c3b4761a8f6c175670d5eaf8">&#9670;&nbsp;</a></span>HandleExceptionWithBroker()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool crashpad::CrashReportExceptionHandler::HandleExceptionWithBroker </td>
<td>(</td>
<td class="paramtype">pid_t&#160;</td>
<td class="paramname"><em>client_process_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structcrashpad_1_1ClientInformation.html">ClientInformation</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>broker_sock</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 on the receipt of a crash dump request from a client for a crash that should be mediated by a <a class="el" href="classcrashpad_1_1PtraceBroker.html" title="Implements a PtraceConnection over a socket. ">PtraceBroker</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">client_process_id</td><td>The process ID of the crashing client. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">info</td><td>Information on the client. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">broker_sock</td><td>A socket connected to the <a class="el" href="classcrashpad_1_1PtraceBroker.html" title="Implements a PtraceConnection over a socket. ">PtraceBroker</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on success. <code>false</code> on failure with a message logged. </dd></dl>
<p>Implements <a class="el" href="classcrashpad_1_1ExceptionHandlerServer_1_1Delegate.html#a23454637c526f20495ebf6a4688188d7">crashpad::ExceptionHandlerServer::Delegate</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>handler/fuchsia/crash_report_exception_handler.h</li>
<li>handler/fuchsia/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.14
</small></address>
</body>
</html>