blob: 7c746183a12b0109c30474823d4700b0b42c8f5e [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.18"/>
<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.18 -->
<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 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>.
<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,266,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:a8a6915cc3ec83393d25aefb9dcb6c9c5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashReportExceptionHandler.html#a8a6915cc3ec83393d25aefb9dcb6c9c5">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, bool write_minidump_to_database, bool write_minidump_to_log, const UserStreamDataSources *user_stream_data_sources)</td></tr>
<tr class="memdesc:a8a6915cc3ec83393d25aefb9dcb6c9c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new object that will store crash reports in <em>database</em>. <a href="classcrashpad_1_1CrashReportExceptionHandler.html#a8a6915cc3ec83393d25aefb9dcb6c9c5">More...</a><br /></td></tr>
<tr class="separator:a8a6915cc3ec83393d25aefb9dcb6c9c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1fbcf0d81ffaa2503a18e9c9be4ef904"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashReportExceptionHandler.html#a1fbcf0d81ffaa2503a18e9c9be4ef904">HandleException</a> (pid_t client_process_id, uid_t client_uid, const <a class="el" href="structcrashpad_1_1ExceptionHandlerProtocol_1_1ClientInformation.html">ExceptionHandlerProtocol::ClientInformation</a> &amp;info, <a class="el" href="namespacecrashpad.html#af2d003bfc8632755c60ab27bd6d1c8ae">VMAddress</a> requesting_thread_stack_address=0, pid_t *requesting_thread_id=nullptr, <a class="el" href="structcrashpad_1_1UUID.html">UUID</a> *local_report_id=nullptr) override</td></tr>
<tr class="memdesc:a1fbcf0d81ffaa2503a18e9c9be4ef904"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on receipt of a crash dump request from a client. <a href="classcrashpad_1_1CrashReportExceptionHandler.html#a1fbcf0d81ffaa2503a18e9c9be4ef904">More...</a><br /></td></tr>
<tr class="separator:a1fbcf0d81ffaa2503a18e9c9be4ef904"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a987b0c71d61a773d3ae6378b61ca92c0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashReportExceptionHandler.html#a987b0c71d61a773d3ae6378b61ca92c0">HandleExceptionWithBroker</a> (pid_t client_process_id, uid_t client_uid, const <a class="el" href="structcrashpad_1_1ExceptionHandlerProtocol_1_1ClientInformation.html">ExceptionHandlerProtocol::ClientInformation</a> &amp;info, int broker_sock, <a class="el" href="structcrashpad_1_1UUID.html">UUID</a> *local_report_id=nullptr) override</td></tr>
<tr class="memdesc:a987b0c71d61a773d3ae6378b61ca92c0"><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="classcrashpad_1_1CrashReportExceptionHandler.html#a987b0c71d61a773d3ae6378b61ca92c0">More...</a><br /></td></tr>
<tr class="separator:a987b0c71d61a773d3ae6378b61ca92c0"><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="classcrashpad_1_1CrashReportExceptionHandler.html#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="classcrashpad_1_1CrashReportExceptionHandler.html#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="classcrashpad_1_1CrashReportExceptionHandler.html#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 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>
<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="a8a6915cc3ec83393d25aefb9dcb6c9c5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8a6915cc3ec83393d25aefb9dcb6c9c5">&#9670;&nbsp;</a></span>CrashReportExceptionHandler() <span class="overload">[1/3]</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">bool&#160;</td>
<td class="paramname"><em>write_minidump_to_database</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>write_minidump_to_log</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">write_minidump_to_database</td><td>Whether the minidump shall be written to database. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">write_minidump_to_log</td><td>Whether the minidump shall be written to log. </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/3]</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/3]</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="a1fbcf0d81ffaa2503a18e9c9be4ef904"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1fbcf0d81ffaa2503a18e9c9be4ef904">&#9670;&nbsp;</a></span>HandleException()</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">uid_t&#160;</td>
<td class="paramname"><em>client_uid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structcrashpad_1_1ExceptionHandlerProtocol_1_1ClientInformation.html">ExceptionHandlerProtocol::ClientInformation</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacecrashpad.html#af2d003bfc8632755c60ab27bd6d1c8ae">VMAddress</a>&#160;</td>
<td class="paramname"><em>requesting_thread_stack_address</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">pid_t *&#160;</td>
<td class="paramname"><em>requesting_thread_id</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structcrashpad_1_1UUID.html">UUID</a> *&#160;</td>
<td class="paramname"><em>local_report_id</em> = <code>nullptr</code>&#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">client_uid</td><td>The user 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">requesting_thread_stack_address</td><td>Any address within the stack range for the the thread that sent the crash dump request. Optional. If unspecified or 0, <em>requesting_thread_id</em> will be -1. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">requesting_thread_id</td><td>The thread ID of the thread which requested the crash dump if not <code>nullptr</code>. Set to -1 if the thread ID could not be determined. Optional. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">local_report_id</td><td>The unique identifier for the report created in the local report database. Optional. </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#aebc8d4d844a27c1f28cdae64eea3a6f6">crashpad::ExceptionHandlerServer::Delegate</a>.</p>
</div>
</div>
<a id="a987b0c71d61a773d3ae6378b61ca92c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a987b0c71d61a773d3ae6378b61ca92c0">&#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">uid_t&#160;</td>
<td class="paramname"><em>client_uid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structcrashpad_1_1ExceptionHandlerProtocol_1_1ClientInformation.html">ExceptionHandlerProtocol::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>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structcrashpad_1_1UUID.html">UUID</a> *&#160;</td>
<td class="paramname"><em>local_report_id</em> = <code>nullptr</code>&#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">client_uid</td><td>The uid 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>
<tr><td class="paramdir">[out]</td><td class="paramname">local_report_id</td><td>The unique identifier for the report created in the local report database. Optional. </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#afd2cb53f2df3377d8ec66c9565cd9179">crashpad::ExceptionHandlerServer::Delegate</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>handler/linux/crash_report_exception_handler.h</li>
<li>handler/linux/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.18
</small></address>
</body>
</html>