blob: 7296363f6963d632d1957d192f1c765ed72753e3 [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::CrashpadClient 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_1CrashpadClient.html">CrashpadClient</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classcrashpad_1_1CrashpadClient-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">crashpad::CrashpadClient Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>The primary interface for an application to have Crashpad monitor it for crashes.
<a href="classcrashpad_1_1CrashpadClient.html#details">More...</a></p>
<p><code>#include &quot;client/crashpad_client.h&quot;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a70bb804f89d6ff2542eab67e3c8e63cc"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">: uint32_t </td></tr>
<tr class="separator:a70bb804f89d6ff2542eab67e3c8e63cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7366c56f2429a00f217be3c0d3165f5f"><td class="memItemLeft" align="right" valign="top"><a id="a7366c56f2429a00f217be3c0d3165f5f"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a7366c56f2429a00f217be3c0d3165f5f">FirstChanceHandler</a> = bool(*)(int, siginfo_t *, ucontext_t *)</td></tr>
<tr class="memdesc:a7366c56f2429a00f217be3c0d3165f5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The type for custom handlers installed by clients. <br /></td></tr>
<tr class="separator:a7366c56f2429a00f217be3c0d3165f5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><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:a810ad9941bedba543bf60507c31c55da"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a810ad9941bedba543bf60507c31c55da">StartHandler</a> (const base::FilePath &amp;handler, const base::FilePath &amp;database, const base::FilePath &amp;metrics_dir, const std::string &amp;url, const std::map&lt; std::string, std::string &gt; &amp;annotations, const std::vector&lt; std::string &gt; &amp;arguments, bool restartable, bool asynchronous_start)</td></tr>
<tr class="memdesc:a810ad9941bedba543bf60507c31c55da"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts a Crashpad handler process, performing any necessary handshake to configure it. <a href="classcrashpad_1_1CrashpadClient.html#a810ad9941bedba543bf60507c31c55da">More...</a><br /></td></tr>
<tr class="separator:a810ad9941bedba543bf60507c31c55da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2d2d23831a27eef8fe99deb2d3119dc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#ae2d2d23831a27eef8fe99deb2d3119dc">SetHandlerSocket</a> (<a class="el" href="namespacecrashpad.html#a9daa1b956487883acd9f43d13cc77339">ScopedFileHandle</a> sock, pid_t pid)</td></tr>
<tr class="memdesc:ae2d2d23831a27eef8fe99deb2d3119dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the socket to a presumably-running Crashpad handler process which was started with <a class="el" href="classcrashpad_1_1CrashpadClient.html#a810ad9941bedba543bf60507c31c55da" title="Starts a Crashpad handler process, performing any necessary handshake to configure it.">StartHandler()</a>. <a href="classcrashpad_1_1CrashpadClient.html#ae2d2d23831a27eef8fe99deb2d3119dc">More...</a><br /></td></tr>
<tr class="separator:ae2d2d23831a27eef8fe99deb2d3119dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6ab4585d5703a3289a7f05df806575a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#ac6ab4585d5703a3289a7f05df806575a">StartJavaHandlerAtCrash</a> (const std::string &amp;class_name, const std::vector&lt; std::string &gt; *env, const base::FilePath &amp;database, const base::FilePath &amp;metrics_dir, const std::string &amp;url, const std::map&lt; std::string, std::string &gt; &amp;annotations, const std::vector&lt; std::string &gt; &amp;arguments)</td></tr>
<tr class="memdesc:ac6ab4585d5703a3289a7f05df806575a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Installs a signal handler to execute <code>/system/bin/app_process</code> and load a Java class in response to a crash. <a href="classcrashpad_1_1CrashpadClient.html#ac6ab4585d5703a3289a7f05df806575a">More...</a><br /></td></tr>
<tr class="separator:ac6ab4585d5703a3289a7f05df806575a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ed0bd663b34b4bd5640cf6e42289034"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a1ed0bd663b34b4bd5640cf6e42289034">StartHandlerWithLinkerAtCrash</a> (const std::string &amp;handler_trampoline, const std::string &amp;handler_library, bool is_64_bit, const std::vector&lt; std::string &gt; *env, const base::FilePath &amp;database, const base::FilePath &amp;metrics_dir, const std::string &amp;url, const std::map&lt; std::string, std::string &gt; &amp;annotations, const std::vector&lt; std::string &gt; &amp;arguments)</td></tr>
<tr class="memdesc:a1ed0bd663b34b4bd5640cf6e42289034"><td class="mdescLeft">&#160;</td><td class="mdescRight">Installs a signal handler to start a Crashpad handler process by loading it with <code>/system/bin/linker</code>. <a href="classcrashpad_1_1CrashpadClient.html#a1ed0bd663b34b4bd5640cf6e42289034">More...</a><br /></td></tr>
<tr class="separator:a1ed0bd663b34b4bd5640cf6e42289034"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a942c84be2b904987b0d7e6a410eff100"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a942c84be2b904987b0d7e6a410eff100">StartHandlerAtCrash</a> (const base::FilePath &amp;handler, const base::FilePath &amp;database, const base::FilePath &amp;metrics_dir, const std::string &amp;url, const std::map&lt; std::string, std::string &gt; &amp;annotations, const std::vector&lt; std::string &gt; &amp;arguments)</td></tr>
<tr class="memdesc:a942c84be2b904987b0d7e6a410eff100"><td class="mdescLeft">&#160;</td><td class="mdescRight">Installs a signal handler to launch a handler process in reponse to a crash. <a href="classcrashpad_1_1CrashpadClient.html#a942c84be2b904987b0d7e6a410eff100">More...</a><br /></td></tr>
<tr class="separator:a942c84be2b904987b0d7e6a410eff100"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60f5ab794ec5e1e671e13c28e82fa5f5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a60f5ab794ec5e1e671e13c28e82fa5f5">SetUnhandledSignals</a> (const std::set&lt; int &gt; &amp;unhandled_signals)</td></tr>
<tr class="memdesc:a60f5ab794ec5e1e671e13c28e82fa5f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configures a set of signals that shouldn't have Crashpad signal handlers installed. <a href="classcrashpad_1_1CrashpadClient.html#a60f5ab794ec5e1e671e13c28e82fa5f5">More...</a><br /></td></tr>
<tr class="separator:a60f5ab794ec5e1e671e13c28e82fa5f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03b085be5f0d5682822141c104998c65"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a03b085be5f0d5682822141c104998c65">StartCrashpadInProcessHandler</a> ()</td></tr>
<tr class="memdesc:a03b085be5f0d5682822141c104998c65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configures the process to direct its crashes to the iOS in-process Crashpad handler. <a href="classcrashpad_1_1CrashpadClient.html#a03b085be5f0d5682822141c104998c65">More...</a><br /></td></tr>
<tr class="separator:a03b085be5f0d5682822141c104998c65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a89f34445eca859e6c0d1876e8e171c25"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a89f34445eca859e6c0d1876e8e171c25">SetHandlerMachService</a> (const std::string &amp;service_name)</td></tr>
<tr class="memdesc:a89f34445eca859e6c0d1876e8e171c25"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the process’&#160;crash handler to a Mach service registered with the bootstrap server. <a href="classcrashpad_1_1CrashpadClient.html#a89f34445eca859e6c0d1876e8e171c25">More...</a><br /></td></tr>
<tr class="separator:a89f34445eca859e6c0d1876e8e171c25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a35e9ce1b1771a597aa3276ec28de28a7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a35e9ce1b1771a597aa3276ec28de28a7">SetHandlerMachPort</a> (base::mac::ScopedMachSendRight exception_port)</td></tr>
<tr class="memdesc:a35e9ce1b1771a597aa3276ec28de28a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the process’&#160;crash handler to a Mach port. <a href="classcrashpad_1_1CrashpadClient.html#a35e9ce1b1771a597aa3276ec28de28a7">More...</a><br /></td></tr>
<tr class="separator:a35e9ce1b1771a597aa3276ec28de28a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7463d2dea776beddf8b45d8d17acbf7a"><td class="memItemLeft" align="right" valign="top">base::mac::ScopedMachSendRight&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a7463d2dea776beddf8b45d8d17acbf7a">GetHandlerMachPort</a> () const</td></tr>
<tr class="memdesc:a7463d2dea776beddf8b45d8d17acbf7a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves a send right to the process’&#160;crash handler Mach port. <a href="classcrashpad_1_1CrashpadClient.html#a7463d2dea776beddf8b45d8d17acbf7a">More...</a><br /></td></tr>
<tr class="separator:a7463d2dea776beddf8b45d8d17acbf7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f1d5d38e9b4f5781e3821551dcc39d5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a9f1d5d38e9b4f5781e3821551dcc39d5">SetHandlerIPCPipe</a> (const std::wstring &amp;ipc_pipe)</td></tr>
<tr class="memdesc:a9f1d5d38e9b4f5781e3821551dcc39d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the IPC pipe of a presumably-running Crashpad handler process which was started with <a class="el" href="classcrashpad_1_1CrashpadClient.html#a810ad9941bedba543bf60507c31c55da" title="Starts a Crashpad handler process, performing any necessary handshake to configure it.">StartHandler()</a> or by other compatible means and does an IPC message exchange to register this process with the handler. Crashes will be serviced once this method returns. <a href="classcrashpad_1_1CrashpadClient.html#a9f1d5d38e9b4f5781e3821551dcc39d5">More...</a><br /></td></tr>
<tr class="separator:a9f1d5d38e9b4f5781e3821551dcc39d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2fc86d3d5bc6dcc9c9456e487f516c4d"><td class="memItemLeft" align="right" valign="top">std::wstring&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a2fc86d3d5bc6dcc9c9456e487f516c4d">GetHandlerIPCPipe</a> () const</td></tr>
<tr class="memdesc:a2fc86d3d5bc6dcc9c9456e487f516c4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the IPC pipe name used to register with the Crashpad handler. <a href="classcrashpad_1_1CrashpadClient.html#a2fc86d3d5bc6dcc9c9456e487f516c4d">More...</a><br /></td></tr>
<tr class="separator:a2fc86d3d5bc6dcc9c9456e487f516c4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0377d4e93ac77453f57f3c1fcae09e14"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a0377d4e93ac77453f57f3c1fcae09e14">WaitForHandlerStart</a> (unsigned int timeout_ms)</td></tr>
<tr class="memdesc:a0377d4e93ac77453f57f3c1fcae09e14"><td class="mdescLeft">&#160;</td><td class="mdescRight">When <code>asynchronous_start</code> is used with <a class="el" href="classcrashpad_1_1CrashpadClient.html#a810ad9941bedba543bf60507c31c55da" title="Starts a Crashpad handler process, performing any necessary handshake to configure it.">StartHandler()</a>, this method can be used to block until the handler launch has been completed to retrieve status information. <a href="classcrashpad_1_1CrashpadClient.html#a0377d4e93ac77453f57f3c1fcae09e14">More...</a><br /></td></tr>
<tr class="separator:a0377d4e93ac77453f57f3c1fcae09e14"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a7f78d5b29981a529a181734f14aa0bf5"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a7f78d5b29981a529a181734f14aa0bf5">GetHandlerSocket</a> (int *sock, pid_t *pid)</td></tr>
<tr class="memdesc:a7f78d5b29981a529a181734f14aa0bf5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the socket and process ID for the handler. <a href="classcrashpad_1_1CrashpadClient.html#a7f78d5b29981a529a181734f14aa0bf5">More...</a><br /></td></tr>
<tr class="separator:a7f78d5b29981a529a181734f14aa0bf5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ec0698a7626fd82a3dc756f60d4e061"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a5ec0698a7626fd82a3dc756f60d4e061">StartJavaHandlerForClient</a> (const std::string &amp;class_name, const std::vector&lt; std::string &gt; *env, const base::FilePath &amp;database, const base::FilePath &amp;metrics_dir, const std::string &amp;url, const std::map&lt; std::string, std::string &gt; &amp;annotations, const std::vector&lt; std::string &gt; &amp;arguments, int socket)</td></tr>
<tr class="memdesc:a5ec0698a7626fd82a3dc756f60d4e061"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes <code>/system/bin/app_process</code> and loads a Java class. <a href="classcrashpad_1_1CrashpadClient.html#a5ec0698a7626fd82a3dc756f60d4e061">More...</a><br /></td></tr>
<tr class="separator:a5ec0698a7626fd82a3dc756f60d4e061"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86d9776fd32f37ef528fa1a3eeac78fc"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a86d9776fd32f37ef528fa1a3eeac78fc">StartHandlerWithLinkerForClient</a> (const std::string &amp;handler_trampoline, const std::string &amp;handler_library, bool is_64_bit, const std::vector&lt; std::string &gt; *env, const base::FilePath &amp;database, const base::FilePath &amp;metrics_dir, const std::string &amp;url, const std::map&lt; std::string, std::string &gt; &amp;annotations, const std::vector&lt; std::string &gt; &amp;arguments, int socket)</td></tr>
<tr class="memdesc:a86d9776fd32f37ef528fa1a3eeac78fc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts a Crashpad handler process with an initial client by loading it with <code>/system/bin/linker</code>. <a href="classcrashpad_1_1CrashpadClient.html#a86d9776fd32f37ef528fa1a3eeac78fc">More...</a><br /></td></tr>
<tr class="separator:a86d9776fd32f37ef528fa1a3eeac78fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10b09eb149139d4df63a4bca3042ef67"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a10b09eb149139d4df63a4bca3042ef67">StartHandlerForClient</a> (const base::FilePath &amp;handler, const base::FilePath &amp;database, const base::FilePath &amp;metrics_dir, const std::string &amp;url, const std::map&lt; std::string, std::string &gt; &amp;annotations, const std::vector&lt; std::string &gt; &amp;arguments, int socket)</td></tr>
<tr class="memdesc:a10b09eb149139d4df63a4bca3042ef67"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts a handler process with an initial client. <a href="classcrashpad_1_1CrashpadClient.html#a10b09eb149139d4df63a4bca3042ef67">More...</a><br /></td></tr>
<tr class="separator:a10b09eb149139d4df63a4bca3042ef67"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab06443c04d43a2c0dac926275c5ad27"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#aab06443c04d43a2c0dac926275c5ad27">DumpWithoutCrash</a> (NativeCPUContext *context)</td></tr>
<tr class="memdesc:aab06443c04d43a2c0dac926275c5ad27"><td class="mdescLeft">&#160;</td><td class="mdescRight">Requests that the handler capture a dump even though there hasn't been a crash. <a href="classcrashpad_1_1CrashpadClient.html#aab06443c04d43a2c0dac926275c5ad27">More...</a><br /></td></tr>
<tr class="separator:aab06443c04d43a2c0dac926275c5ad27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c85fe7b91688420fad92df3914a4a74"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a1c85fe7b91688420fad92df3914a4a74">CrashWithoutDump</a> (const std::string &amp;message)</td></tr>
<tr class="memdesc:a1c85fe7b91688420fad92df3914a4a74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables any installed crash handler, including any FirstChanceHandler and crashes the current process. <a href="classcrashpad_1_1CrashpadClient.html#a1c85fe7b91688420fad92df3914a4a74">More...</a><br /></td></tr>
<tr class="separator:a1c85fe7b91688420fad92df3914a4a74"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbf4149291f643c8bfdb43ce8b6c55af"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#afbf4149291f643c8bfdb43ce8b6c55af">SetFirstChanceExceptionHandler</a> (<a class="el" href="classcrashpad_1_1CrashpadClient.html#a7366c56f2429a00f217be3c0d3165f5f">FirstChanceHandler</a> handler)</td></tr>
<tr class="memdesc:afbf4149291f643c8bfdb43ce8b6c55af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Installs a custom crash signal handler which runs before the currently installed Crashpad handler. <a href="classcrashpad_1_1CrashpadClient.html#afbf4149291f643c8bfdb43ce8b6c55af">More...</a><br /></td></tr>
<tr class="separator:afbf4149291f643c8bfdb43ce8b6c55af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11d9ce224c47b7c14fc57bccb9b08204"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a11d9ce224c47b7c14fc57bccb9b08204">DumpWithoutCrash</a> (NativeCPUContext *context)</td></tr>
<tr class="memdesc:a11d9ce224c47b7c14fc57bccb9b08204"><td class="mdescLeft">&#160;</td><td class="mdescRight">Requests that the handler capture a dump even though there hasn't been a crash. <a href="classcrashpad_1_1CrashpadClient.html#a11d9ce224c47b7c14fc57bccb9b08204">More...</a><br /></td></tr>
<tr class="separator:a11d9ce224c47b7c14fc57bccb9b08204"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ac211aa3a8cf278eb10f4058a7776fb"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a8ac211aa3a8cf278eb10f4058a7776fb">DumpWithoutCrash</a> (const CONTEXT &amp;context)</td></tr>
<tr class="memdesc:a8ac211aa3a8cf278eb10f4058a7776fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Requests that the handler capture a dump even though there hasn't been a crash. <a href="classcrashpad_1_1CrashpadClient.html#a8ac211aa3a8cf278eb10f4058a7776fb">More...</a><br /></td></tr>
<tr class="separator:a8ac211aa3a8cf278eb10f4058a7776fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87d1fa142b0bf7094fc66fef3135a64a"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a87d1fa142b0bf7094fc66fef3135a64a">DumpAndCrash</a> (EXCEPTION_POINTERS *exception_pointers)</td></tr>
<tr class="memdesc:a87d1fa142b0bf7094fc66fef3135a64a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Requests that the handler capture a dump using the given <em>exception_pointers</em> to get the <code>EXCEPTION_RECORD</code> and <code>CONTEXT</code>. <a href="classcrashpad_1_1CrashpadClient.html#a87d1fa142b0bf7094fc66fef3135a64a">More...</a><br /></td></tr>
<tr class="separator:a87d1fa142b0bf7094fc66fef3135a64a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a35a46ba3d17822a7025b526980564d7e"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a35a46ba3d17822a7025b526980564d7e">DumpAndCrashTargetProcess</a> (HANDLE process, HANDLE blame_thread, DWORD exception_code)</td></tr>
<tr class="memdesc:a35a46ba3d17822a7025b526980564d7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Requests that the handler capture a dump of a different process. <a href="classcrashpad_1_1CrashpadClient.html#a35a46ba3d17822a7025b526980564d7e">More...</a><br /></td></tr>
<tr class="separator:a35a46ba3d17822a7025b526980564d7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a6a1e62d90a67db782664b1fe5a952f"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a1a6a1e62d90a67db782664b1fe5a952f">UseSystemDefaultHandler</a> ()</td></tr>
<tr class="memdesc:a1a6a1e62d90a67db782664b1fe5a952f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configures the process to direct its crashes to the default handler for the operating system. <a href="classcrashpad_1_1CrashpadClient.html#a1a6a1e62d90a67db782664b1fe5a952f">More...</a><br /></td></tr>
<tr class="separator:a1a6a1e62d90a67db782664b1fe5a952f"><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>The primary interface for an application to have Crashpad monitor it for crashes. </p>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a id="a70bb804f89d6ff2542eab67e3c8e63cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a70bb804f89d6ff2542eab67e3c8e63cc">&#9670;&nbsp;</a></span>anonymous enum</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">anonymous enum : uint32_t</td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a70bb804f89d6ff2542eab67e3c8e63cca193286f9cde3032e18a06a4e6452e660"></a>kTriggeredExceptionCode&#160;</td><td class="fielddoc"><p>The exception code (roughly "Client called") used when <a class="el" href="classcrashpad_1_1CrashpadClient.html#a35a46ba3d17822a7025b526980564d7e" title="Requests that the handler capture a dump of a different process.">DumpAndCrashTargetProcess()</a> triggers an exception in a target process. </p>
<dl class="section note"><dt>Note</dt><dd>This value does not have any bits of the top nibble set, to avoid confusion with real exception codes which tend to have those bits set. </dd></dl>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a1c85fe7b91688420fad92df3914a4a74"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1c85fe7b91688420fad92df3914a4a74">&#9670;&nbsp;</a></span>CrashWithoutDump()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void crashpad::CrashpadClient::CrashWithoutDump </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>message</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Disables any installed crash handler, including any FirstChanceHandler and crashes the current process. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">message</td><td>A message to be logged before crashing. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a87d1fa142b0bf7094fc66fef3135a64a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a87d1fa142b0bf7094fc66fef3135a64a">&#9670;&nbsp;</a></span>DumpAndCrash()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void crashpad::CrashpadClient::DumpAndCrash </td>
<td>(</td>
<td class="paramtype">EXCEPTION_POINTERS *&#160;</td>
<td class="paramname"><em>exception_pointers</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Requests that the handler capture a dump using the given <em>exception_pointers</em> to get the <code>EXCEPTION_RECORD</code> and <code>CONTEXT</code>. </p>
<p>This function is not necessary in general usage as an unhandled exception filter is installed by <a class="el" href="classcrashpad_1_1CrashpadClient.html#a810ad9941bedba543bf60507c31c55da" title="Starts a Crashpad handler process, performing any necessary handshake to configure it.">StartHandler()</a> or <a class="el" href="classcrashpad_1_1CrashpadClient.html#a9f1d5d38e9b4f5781e3821551dcc39d5" title="Sets the IPC pipe of a presumably-running Crashpad handler process which was started with StartHandle...">SetHandlerIPCPipe()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">exception_pointers</td><td>An <code>EXCEPTION_POINTERS</code>, as would generally passed to an unhandled exception filter. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a35a46ba3d17822a7025b526980564d7e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a35a46ba3d17822a7025b526980564d7e">&#9670;&nbsp;</a></span>DumpAndCrashTargetProcess()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool crashpad::CrashpadClient::DumpAndCrashTargetProcess </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">HANDLE&#160;</td>
<td class="paramname"><em>blame_thread</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">DWORD&#160;</td>
<td class="paramname"><em>exception_code</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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Requests that the handler capture a dump of a different process. </p>
<p>The target process must be an already-registered Crashpad client. An exception will be triggered in the target process, and the regular dump mechanism used. This function will block until the exception in the target process has been handled by the Crashpad handler.</p>
<p>This function is unavailable when running on Windows XP and will return <code>false</code>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">process</td><td>A <code>HANDLE</code> identifying the process to be dumped. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">blame_thread</td><td>If non-null, a <code>HANDLE</code> valid in the caller's process, referring to a thread in the target process. If this is supplied, instead of the exception referring to the location where the exception was injected, an exception record will be fabricated that refers to the current location of the given thread. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">exception_code</td><td>If <em>blame_thread</em> is non-null, this will be used as the exception code in the exception record.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if the exception was triggered successfully. </dd></dl>
</div>
</div>
<a id="a8ac211aa3a8cf278eb10f4058a7776fb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8ac211aa3a8cf278eb10f4058a7776fb">&#9670;&nbsp;</a></span>DumpWithoutCrash() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void crashpad::CrashpadClient::DumpWithoutCrash </td>
<td>(</td>
<td class="paramtype">const CONTEXT &amp;&#160;</td>
<td class="paramname"><em>context</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Requests that the handler capture a dump even though there hasn't been a crash. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">context</td><td>A <code>CONTEXT</code>, generally captured by <a class="el" href="namespacecrashpad.html#ac25486c6b4c38fc7c7868e978094edcf" title="Saves the CPU context.">CaptureContext()</a> or similar. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aab06443c04d43a2c0dac926275c5ad27"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aab06443c04d43a2c0dac926275c5ad27">&#9670;&nbsp;</a></span>DumpWithoutCrash() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void crashpad::CrashpadClient::DumpWithoutCrash </td>
<td>(</td>
<td class="paramtype">NativeCPUContext *&#160;</td>
<td class="paramname"><em>context</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Requests that the handler capture a dump even though there hasn't been a crash. </p>
<p>A handler must have already been installed before calling this method.</p>
<p>TODO(jperaza): Floating point information in the context is zeroed out until <a class="el" href="namespacecrashpad.html#ac25486c6b4c38fc7c7868e978094edcf" title="Saves the CPU context.">CaptureContext()</a> supports collecting that information.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">context</td><td>A NativeCPUContext, generally captured by <a class="el" href="namespacecrashpad.html#ac25486c6b4c38fc7c7868e978094edcf" title="Saves the CPU context.">CaptureContext()</a> or similar. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a11d9ce224c47b7c14fc57bccb9b08204"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a11d9ce224c47b7c14fc57bccb9b08204">&#9670;&nbsp;</a></span>DumpWithoutCrash() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void crashpad::CrashpadClient::DumpWithoutCrash </td>
<td>(</td>
<td class="paramtype">NativeCPUContext *&#160;</td>
<td class="paramname"><em>context</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Requests that the handler capture a dump even though there hasn't been a crash. </p>
<p>A handler must have already been installed before calling this method.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">context</td><td>A NativeCPUContext, generally captured by <a class="el" href="namespacecrashpad.html#ac25486c6b4c38fc7c7868e978094edcf" title="Saves the CPU context.">CaptureContext()</a> or similar. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a2fc86d3d5bc6dcc9c9456e487f516c4d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2fc86d3d5bc6dcc9c9456e487f516c4d">&#9670;&nbsp;</a></span>GetHandlerIPCPipe()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::wstring crashpad::CrashpadClient::GetHandlerIPCPipe </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieves the IPC pipe name used to register with the Crashpad handler. </p>
<p>This method is only defined on Windows.</p>
<p>This method retrieves the IPC pipe name set by <a class="el" href="classcrashpad_1_1CrashpadClient.html#a9f1d5d38e9b4f5781e3821551dcc39d5" title="Sets the IPC pipe of a presumably-running Crashpad handler process which was started with StartHandle...">SetHandlerIPCPipe()</a>, or a suitable IPC pipe name chosen by <a class="el" href="classcrashpad_1_1CrashpadClient.html#a810ad9941bedba543bf60507c31c55da" title="Starts a Crashpad handler process, performing any necessary handshake to configure it.">StartHandler()</a>. It must only be called after a successful call to one of those methods. It is intended to be used to obtain the IPC pipe name so that it may be passed to other processes, so that they may register with an existing Crashpad handler by calling <a class="el" href="classcrashpad_1_1CrashpadClient.html#a9f1d5d38e9b4f5781e3821551dcc39d5" title="Sets the IPC pipe of a presumably-running Crashpad handler process which was started with StartHandle...">SetHandlerIPCPipe()</a>.</p>
<dl class="section return"><dt>Returns</dt><dd>The full name of the crash handler IPC pipe, a string of the form <code>&quot;\\.\pipe\NAME&quot;</code>. </dd></dl>
</div>
</div>
<a id="a7463d2dea776beddf8b45d8d17acbf7a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7463d2dea776beddf8b45d8d17acbf7a">&#9670;&nbsp;</a></span>GetHandlerMachPort()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">base::mac::ScopedMachSendRight crashpad::CrashpadClient::GetHandlerMachPort </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieves a send right to the process’&#160;crash handler Mach port. </p>
<p>This method is only defined on macOS.</p>
<p>This method can be used to obtain the crash handler Mach port when a Crashpad client process wishes to provide a send right to this port to another process. The IPC mechanism used to convey the right is under the application’s control. If the other process wishes to become a client of the same crash handler, it can provide the transferred right to <a class="el" href="classcrashpad_1_1CrashpadClient.html#a35e9ce1b1771a597aa3276ec28de28a7" title="Sets the process’&#160;crash handler to a Mach port.">SetHandlerMachPort()</a>.</p>
<p>See <a class="el" href="classcrashpad_1_1CrashpadClient.html#a810ad9941bedba543bf60507c31c55da" title="Starts a Crashpad handler process, performing any necessary handshake to configure it.">StartHandler()</a> for more detail on how the port and handler are configured.</p>
<dl class="section return"><dt>Returns</dt><dd>The Mach port set by <a class="el" href="classcrashpad_1_1CrashpadClient.html#a35e9ce1b1771a597aa3276ec28de28a7" title="Sets the process’&#160;crash handler to a Mach port.">SetHandlerMachPort()</a>, possibly indirectly by a call to another method such as <a class="el" href="classcrashpad_1_1CrashpadClient.html#a810ad9941bedba543bf60507c31c55da" title="Starts a Crashpad handler process, performing any necessary handshake to configure it.">StartHandler()</a> or <a class="el" href="classcrashpad_1_1CrashpadClient.html#a89f34445eca859e6c0d1876e8e171c25" title="Sets the process’&#160;crash handler to a Mach service registered with the bootstrap server.">SetHandlerMachService()</a>. This method must only be called after a successful call to one of those methods. <code>MACH_PORT_NULL</code> on failure with a message logged. </dd></dl>
</div>
</div>
<a id="a7f78d5b29981a529a181734f14aa0bf5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7f78d5b29981a529a181734f14aa0bf5">&#9670;&nbsp;</a></span>GetHandlerSocket()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static bool crashpad::CrashpadClient::GetHandlerSocket </td>
<td>(</td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">pid_t *&#160;</td>
<td class="paramname"><em>pid</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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieve the socket and process ID for the handler. </p>
<p><code><a class="el" href="classcrashpad_1_1CrashpadClient.html#a810ad9941bedba543bf60507c31c55da" title="Starts a Crashpad handler process, performing any necessary handshake to configure it.">StartHandler()</a></code> must have successfully been called before calling this method.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">sock</td><td>The socket connected to the handler, if not <code>nullptr</code>. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">pid</td><td>The handler's process ID, if not <code>nullptr</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on success. Otherwise <code>false</code> with a message logged. </dd></dl>
</div>
</div>
<a id="afbf4149291f643c8bfdb43ce8b6c55af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afbf4149291f643c8bfdb43ce8b6c55af">&#9670;&nbsp;</a></span>SetFirstChanceExceptionHandler()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void crashpad::CrashpadClient::SetFirstChanceExceptionHandler </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classcrashpad_1_1CrashpadClient.html#a7366c56f2429a00f217be3c0d3165f5f">FirstChanceHandler</a>&#160;</td>
<td class="paramname"><em>handler</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Installs a custom crash signal handler which runs before the currently installed Crashpad handler. </p>
<p>Handling signals appropriately can be tricky and use of this method should be avoided, if possible.</p>
<p>A handler must have already been installed before calling this method.</p>
<p>The custom handler runs in a signal handler context and must be safe for that purpose.</p>
<p>If the custom handler returns <code>true</code>, the signal is considered handled and the signal handler returns. Otherwise, the currently installed Crashpad signal handler is run.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">handler</td><td>The custom crash signal handler to install. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a9f1d5d38e9b4f5781e3821551dcc39d5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f1d5d38e9b4f5781e3821551dcc39d5">&#9670;&nbsp;</a></span>SetHandlerIPCPipe()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool crashpad::CrashpadClient::SetHandlerIPCPipe </td>
<td>(</td>
<td class="paramtype">const std::wstring &amp;&#160;</td>
<td class="paramname"><em>ipc_pipe</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the IPC pipe of a presumably-running Crashpad handler process which was started with <a class="el" href="classcrashpad_1_1CrashpadClient.html#a810ad9941bedba543bf60507c31c55da" title="Starts a Crashpad handler process, performing any necessary handshake to configure it.">StartHandler()</a> or by other compatible means and does an IPC message exchange to register this process with the handler. Crashes will be serviced once this method returns. </p>
<p>This method is only defined on Windows.</p>
<p>This method sets the unhandled exception handler to a local function that when reached will "signal and wait" for the crash handler process to create the dump.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ipc_pipe</td><td>The full name of the crash handler IPC pipe. This is a string of the form <code>&quot;\\.\pipe\NAME&quot;</code>.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on success and <code>false</code> on failure. </dd></dl>
</div>
</div>
<a id="a35e9ce1b1771a597aa3276ec28de28a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a35e9ce1b1771a597aa3276ec28de28a7">&#9670;&nbsp;</a></span>SetHandlerMachPort()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool crashpad::CrashpadClient::SetHandlerMachPort </td>
<td>(</td>
<td class="paramtype">base::mac::ScopedMachSendRight&#160;</td>
<td class="paramname"><em>exception_port</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the process’&#160;crash handler to a Mach port. </p>
<p>This method is only defined on macOS.</p>
<p>See <a class="el" href="classcrashpad_1_1CrashpadClient.html#a810ad9941bedba543bf60507c31c55da" title="Starts a Crashpad handler process, performing any necessary handshake to configure it.">StartHandler()</a> for more detail on how the port and handler are configured.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">exception_port</td><td>An <code>exception_port_t</code> corresponding to a Crashpad exception handler service.</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>
</div>
</div>
<a id="a89f34445eca859e6c0d1876e8e171c25"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a89f34445eca859e6c0d1876e8e171c25">&#9670;&nbsp;</a></span>SetHandlerMachService()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool crashpad::CrashpadClient::SetHandlerMachService </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>service_name</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the process’&#160;crash handler to a Mach service registered with the bootstrap server. </p>
<p>This method is only defined on macOS.</p>
<p>See <a class="el" href="classcrashpad_1_1CrashpadClient.html#a810ad9941bedba543bf60507c31c55da" title="Starts a Crashpad handler process, performing any necessary handshake to configure it.">StartHandler()</a> for more detail on how the port and handler are configured.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">service_name</td><td>The service name of a Crashpad exception handler service previously registered with the bootstrap server.</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>
</div>
</div>
<a id="ae2d2d23831a27eef8fe99deb2d3119dc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae2d2d23831a27eef8fe99deb2d3119dc">&#9670;&nbsp;</a></span>SetHandlerSocket()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool crashpad::CrashpadClient::SetHandlerSocket </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacecrashpad.html#a9daa1b956487883acd9f43d13cc77339">ScopedFileHandle</a>&#160;</td>
<td class="paramname"><em>sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">pid_t&#160;</td>
<td class="paramname"><em>pid</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the socket to a presumably-running Crashpad handler process which was started with <a class="el" href="classcrashpad_1_1CrashpadClient.html#a810ad9941bedba543bf60507c31c55da" title="Starts a Crashpad handler process, performing any necessary handshake to configure it.">StartHandler()</a>. </p>
<p>This method installs a signal handler to request crash dumps on <em>sock</em>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">sock</td><td>A socket connected to a Crashpad handler. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">pid</td><td>The process ID of the handler, used to set the handler as this process' ptracer. 0 indicates it is not necessary to set the handler as this process' ptracer. -1 indicates that the handler's process ID should be determined by communicating over the socket. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a60f5ab794ec5e1e671e13c28e82fa5f5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60f5ab794ec5e1e671e13c28e82fa5f5">&#9670;&nbsp;</a></span>SetUnhandledSignals()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void crashpad::CrashpadClient::SetUnhandledSignals </td>
<td>(</td>
<td class="paramtype">const std::set&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>unhandled_signals</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Configures a set of signals that shouldn't have Crashpad signal handlers installed. </p>
<p>This method should be called before calling <a class="el" href="classcrashpad_1_1CrashpadClient.html#a810ad9941bedba543bf60507c31c55da" title="Starts a Crashpad handler process, performing any necessary handshake to configure it.">StartHandler()</a>, <a class="el" href="classcrashpad_1_1CrashpadClient.html#ae2d2d23831a27eef8fe99deb2d3119dc" title="Sets the socket to a presumably-running Crashpad handler process which was started with StartHandler(...">SetHandlerSocket()</a>, or other methods that install Crashpad signal handlers.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">unhandled_signals</td><td>The set of unhandled signals </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a03b085be5f0d5682822141c104998c65"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a03b085be5f0d5682822141c104998c65">&#9670;&nbsp;</a></span>StartCrashpadInProcessHandler()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void crashpad::CrashpadClient::StartCrashpadInProcessHandler </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Configures the process to direct its crashes to the iOS in-process Crashpad handler. </p>
<p>This method is only defined on iOS.</p>
<p>TODO(justincohen): This method will need to take database, metrics_dir, url and annotations eventually. </p>
</div>
</div>
<a id="a810ad9941bedba543bf60507c31c55da"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a810ad9941bedba543bf60507c31c55da">&#9670;&nbsp;</a></span>StartHandler()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool crashpad::CrashpadClient::StartHandler </td>
<td>(</td>
<td class="paramtype">const base::FilePath &amp;&#160;</td>
<td class="paramname"><em>handler</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const base::FilePath &amp;&#160;</td>
<td class="paramname"><em>database</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const base::FilePath &amp;&#160;</td>
<td class="paramname"><em>metrics_dir</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>url</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::map&lt; std::string, std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>annotations</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>arguments</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>restartable</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>asynchronous_start</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Starts a Crashpad handler process, performing any necessary handshake to configure it. </p>
<p>This method directs crashes to the Crashpad handler. On macOS, this is applicable to this process and all subsequent child processes. On Windows, child processes must also register by using <a class="el" href="classcrashpad_1_1CrashpadClient.html#a9f1d5d38e9b4f5781e3821551dcc39d5" title="Sets the IPC pipe of a presumably-running Crashpad handler process which was started with StartHandle...">SetHandlerIPCPipe()</a>.</p>
<p>On macOS, this method starts a Crashpad handler and obtains a Mach send right corresponding to a receive right held by the handler process. The handler process runs an exception server on this port. This method sets the task’s exception port for <code>EXC_CRASH</code>, <code>EXC_RESOURCE</code>, and <code>EXC_GUARD</code> exceptions to the Mach send right obtained. The handler will be installed with behavior <code>EXCEPTION_STATE_IDENTITY | MACH_EXCEPTION_CODES</code> and thread state flavor <code>MACHINE_THREAD_STATE</code>. Exception ports are inherited, so a Crashpad handler started here will remain the handler for any child processes created after <a class="el" href="classcrashpad_1_1CrashpadClient.html#a810ad9941bedba543bf60507c31c55da" title="Starts a Crashpad handler process, performing any necessary handshake to configure it.">StartHandler()</a> is called. These child processes do not need to call <a class="el" href="classcrashpad_1_1CrashpadClient.html#a810ad9941bedba543bf60507c31c55da" title="Starts a Crashpad handler process, performing any necessary handshake to configure it.">StartHandler()</a> or be aware of Crashpad in any way. The Crashpad handler will receive crashes from child processes that have inherited it as their exception handler even after the process that called <a class="el" href="classcrashpad_1_1CrashpadClient.html#a810ad9941bedba543bf60507c31c55da" title="Starts a Crashpad handler process, performing any necessary handshake to configure it.">StartHandler()</a> exits.</p>
<p>On Windows, if <em>asynchronous_start</em> is <code>true</code>, this function will not directly call <code>CreateProcess()</code>, making it suitable for use in a <code>DllMain()</code>. In that case, the handler is started from a background thread, deferring the handler's startup. Nevertheless, regardless of the value of <em>asynchronous_start</em>, after calling this method, the global unhandled exception filter is set up, and all crashes will be handled by Crashpad. Optionally, use <a class="el" href="classcrashpad_1_1CrashpadClient.html#a0377d4e93ac77453f57f3c1fcae09e14" title="When asynchronous_start is used with StartHandler(), this method can be used to block until the handl...">WaitForHandlerStart()</a> to join with the background thread and retrieve the status of handler startup.</p>
<p>On Fuchsia, this method binds to the exception port of the current default job, and starts a Crashpad handler to monitor that port.</p>
<p>On Linux, this method starts a Crashpad handler, connected to this process via an <code>AF_UNIX</code> socket pair and installs signal handlers to request crash dumps on the client's socket end.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">handler</td><td>The path to a Crashpad handler executable. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">database</td><td>The path to a Crashpad database. The handler will be started with this path as its <code>--database</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">metrics_dir</td><td>The path to an already existing directory where metrics files can be stored. The handler will be started with this path as its <code>--metrics-dir</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">url</td><td>The URL of an upload server. The handler will be started with this URL as its <code>--url</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">annotations</td><td>Process annotations to set in each crash report. The handler will be started with an <code>--annotation</code> argument for each element in this map. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">arguments</td><td>Additional arguments to pass to the Crashpad handler. Arguments passed in other parameters and arguments required to perform the handshake are the responsibility of this method, and must not be specified in this parameter. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">restartable</td><td>If <code>true</code>, the handler will be restarted if it dies, if this behavior is supported. This option is not available on all platforms, and does not function on all OS versions. If it is not supported, it will be ignored. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">asynchronous_start</td><td>If <code>true</code>, the handler will be started from a background thread. Optionally, <a class="el" href="classcrashpad_1_1CrashpadClient.html#a0377d4e93ac77453f57f3c1fcae09e14" title="When asynchronous_start is used with StartHandler(), this method can be used to block until the handl...">WaitForHandlerStart()</a> can be used at a suitable time to retreive the result of background startup. This option is only used on Windows.</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>
</div>
</div>
<a id="a942c84be2b904987b0d7e6a410eff100"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a942c84be2b904987b0d7e6a410eff100">&#9670;&nbsp;</a></span>StartHandlerAtCrash()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool crashpad::CrashpadClient::StartHandlerAtCrash </td>
<td>(</td>
<td class="paramtype">const base::FilePath &amp;&#160;</td>
<td class="paramname"><em>handler</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const base::FilePath &amp;&#160;</td>
<td class="paramname"><em>database</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const base::FilePath &amp;&#160;</td>
<td class="paramname"><em>metrics_dir</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>url</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::map&lt; std::string, std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>annotations</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>arguments</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Installs a signal handler to launch a handler process in reponse to a crash. </p>
<p>The handler process will create a crash dump for this process and exit.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">handler</td><td>The path to a Crashpad handler executable. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">database</td><td>The path to a Crashpad database. The handler will be started with this path as its <code>--database</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">metrics_dir</td><td>The path to an already existing directory where metrics files can be stored. The handler will be started with this path as its <code>--metrics-dir</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">url</td><td>The URL of an upload server. The handler will be started with this URL as its <code>--url</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">annotations</td><td>Process annotations to set in each crash report. The handler will be started with an <code>--annotation</code> argument for each element in this map. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">arguments</td><td>Additional arguments to pass to the Crashpad handler. Arguments passed in other parameters and arguments required to perform the handshake are the responsibility of this method, and must not be specified in this parameter.</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>
</div>
</div>
<a id="a10b09eb149139d4df63a4bca3042ef67"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a10b09eb149139d4df63a4bca3042ef67">&#9670;&nbsp;</a></span>StartHandlerForClient()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool crashpad::CrashpadClient::StartHandlerForClient </td>
<td>(</td>
<td class="paramtype">const base::FilePath &amp;&#160;</td>
<td class="paramname"><em>handler</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const base::FilePath &amp;&#160;</td>
<td class="paramname"><em>database</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const base::FilePath &amp;&#160;</td>
<td class="paramname"><em>metrics_dir</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>url</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::map&lt; std::string, std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>annotations</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>arguments</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>socket</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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Starts a handler process with an initial client. </p>
<p>This method allows a process to launch the handler process on behalf of another process.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">handler</td><td>The path to a Crashpad handler executable. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">database</td><td>The path to a Crashpad database. The handler will be started with this path as its <code>--database</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">metrics_dir</td><td>The path to an already existing directory where metrics files can be stored. The handler will be started with this path as its <code>--metrics-dir</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">url</td><td>The URL of an upload server. The handler will be started with this URL as its <code>--url</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">annotations</td><td>Process annotations to set in each crash report. The handler will be started with an <code>--annotation</code> argument for each element in this map. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">arguments</td><td>Additional arguments to pass to the Crashpad handler. Arguments passed in other parameters and arguments required to perform the handshake are the responsibility of this method, and must not be specified in this parameter. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">socket</td><td>The server end of a socket pair. The client end should be used with an <a class="el" href="classcrashpad_1_1ExceptionHandlerClient.html" title="A client for an ExceptionHandlerServer.">ExceptionHandlerClient</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>
</div>
</div>
<a id="a1ed0bd663b34b4bd5640cf6e42289034"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1ed0bd663b34b4bd5640cf6e42289034">&#9670;&nbsp;</a></span>StartHandlerWithLinkerAtCrash()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool crashpad::CrashpadClient::StartHandlerWithLinkerAtCrash </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>handler_trampoline</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>handler_library</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>is_64_bit</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::string &gt; *&#160;</td>
<td class="paramname"><em>env</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const base::FilePath &amp;&#160;</td>
<td class="paramname"><em>database</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const base::FilePath &amp;&#160;</td>
<td class="paramname"><em>metrics_dir</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>url</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::map&lt; std::string, std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>annotations</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>arguments</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Installs a signal handler to start a Crashpad handler process by loading it with <code>/system/bin/linker</code>. </p>
<p>This method is only supported by Android Q+.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">handler_trampoline</td><td>The path to a Crashpad handler trampoline executable, possibly located within an apk, e.g. "/data/app/myapk.apk!/myabi/libcrashpad_handler_trampoline.so". </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">handler_library</td><td>The name of a library exporting the symbol <code>CrashpadHandlerMain()</code>. The path to this library must be present in <code>LD_LIBRARY_PATH</code>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">is_64_bit</td><td><code>true</code> if <em>handler_trampoline</em> and <em>handler_library</em> are 64-bit objects. They must have the same bitness. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>A vector of environment variables of the form <code>var=value</code> defining the environment in which to execute <code>app_process</code>. If this value is <code>nullptr</code>, the application's environment at the time of the crash will be used. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">database</td><td>The path to a Crashpad database. The handler will be started with this path as its <code>--database</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">metrics_dir</td><td>The path to an already existing directory where metrics files can be stored. The handler will be started with this path as its <code>--metrics-dir</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">url</td><td>The URL of an upload server. The handler will be started with this URL as its <code>--url</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">annotations</td><td>Process annotations to set in each crash report. The handler will be started with an <code>--annotation</code> argument for each element in this map. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">arguments</td><td>Additional arguments to pass to the Crashpad handler. Arguments passed in other parameters and arguments required to perform the handshake are the responsibility of this method, and must not be specified in this parameter.</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>
</div>
</div>
<a id="a86d9776fd32f37ef528fa1a3eeac78fc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86d9776fd32f37ef528fa1a3eeac78fc">&#9670;&nbsp;</a></span>StartHandlerWithLinkerForClient()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static bool crashpad::CrashpadClient::StartHandlerWithLinkerForClient </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>handler_trampoline</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>handler_library</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>is_64_bit</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::string &gt; *&#160;</td>
<td class="paramname"><em>env</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const base::FilePath &amp;&#160;</td>
<td class="paramname"><em>database</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const base::FilePath &amp;&#160;</td>
<td class="paramname"><em>metrics_dir</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>url</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::map&lt; std::string, std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>annotations</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>arguments</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>socket</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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Starts a Crashpad handler process with an initial client by loading it with <code>/system/bin/linker</code>. </p>
<p>This method is only supported by Android Q+.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">handler_trampoline</td><td>The path to a Crashpad handler trampoline executable, possibly located within an apk, e.g. "/data/app/myapk.apk!/myabi/libcrashpad_handler_trampoline.so". </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">handler_library</td><td>The name of a library exporting the symbol <code>CrashpadHandlerMain()</code>. The path to this library must be present in <code>LD_LIBRARY_PATH</code>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">is_64_bit</td><td><code>true</code> if <em>handler_trampoline</em> and <em>handler_library</em> are 64-bit objects. They must have the same bitness. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>A vector of environment variables of the form <code>var=value</code> defining the environment in which to execute <code>app_process</code>. If this value is <code>nullptr</code>, the application's current environment will be used. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">database</td><td>The path to a Crashpad database. The handler will be started with this path as its <code>--database</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">metrics_dir</td><td>The path to an already existing directory where metrics files can be stored. The handler will be started with this path as its <code>--metrics-dir</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">url</td><td>The URL of an upload server. The handler will be started with this URL as its <code>--url</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">annotations</td><td>Process annotations to set in each crash report. The handler will be started with an <code>--annotation</code> argument for each element in this map. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">arguments</td><td>Additional arguments to pass to the Crashpad handler. Arguments passed in other parameters and arguments required to perform the handshake are the responsibility of this method, and must not be specified in this parameter. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">socket</td><td>The server end of a socket pair. The client end should be used with an <a class="el" href="classcrashpad_1_1ExceptionHandlerClient.html" title="A client for an ExceptionHandlerServer.">ExceptionHandlerClient</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>
</div>
</div>
<a id="ac6ab4585d5703a3289a7f05df806575a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6ab4585d5703a3289a7f05df806575a">&#9670;&nbsp;</a></span>StartJavaHandlerAtCrash()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool crashpad::CrashpadClient::StartJavaHandlerAtCrash </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>class_name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::string &gt; *&#160;</td>
<td class="paramname"><em>env</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const base::FilePath &amp;&#160;</td>
<td class="paramname"><em>database</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const base::FilePath &amp;&#160;</td>
<td class="paramname"><em>metrics_dir</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>url</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::map&lt; std::string, std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>annotations</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>arguments</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Installs a signal handler to execute <code>/system/bin/app_process</code> and load a Java class in response to a crash. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">class_name</td><td>The fully qualified class name to load, which must define a <code>main()</code> method to be invoked by <code>app_process</code>. Arguments will be passed to this method as though it were the Crashpad handler. This class is expected to load a native library defining <a class="el" href="namespacecrashpad.html#a6925b00a82891a9fd7a77ec6f5259094" title="The main() of the crashpad_handler binary.">crashpad::HandlerMain()</a> and pass the arguments to it. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>A vector of environment variables of the form <code>var=value</code> defining the environment in which to execute <code>app_process</code>. If this value is <code>nullptr</code>, the application's environment at the time of the crash will be used. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">database</td><td>The path to a Crashpad database. The handler will be started with this path as its <code>--database</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">metrics_dir</td><td>The path to an already existing directory where metrics files can be stored. The handler will be started with this path as its <code>--metrics-dir</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">url</td><td>The URL of an upload server. The handler will be started with this URL as its <code>--url</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">annotations</td><td>Process annotations to set in each crash report. The handler will be started with an <code>--annotation</code> argument for each element in this map. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">arguments</td><td>Additional arguments to pass to the Crashpad handler. Arguments passed in other parameters and arguments required to perform the handshake are the responsibility of this method, and must not be specified in this parameter.</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>
</div>
</div>
<a id="a5ec0698a7626fd82a3dc756f60d4e061"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5ec0698a7626fd82a3dc756f60d4e061">&#9670;&nbsp;</a></span>StartJavaHandlerForClient()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static bool crashpad::CrashpadClient::StartJavaHandlerForClient </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>class_name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::string &gt; *&#160;</td>
<td class="paramname"><em>env</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const base::FilePath &amp;&#160;</td>
<td class="paramname"><em>database</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const base::FilePath &amp;&#160;</td>
<td class="paramname"><em>metrics_dir</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>url</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::map&lt; std::string, std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>annotations</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>arguments</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>socket</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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Executes <code>/system/bin/app_process</code> and loads a Java class. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">class_name</td><td>The fully qualified class name to load, which must define a <code>main()</code> method to be invoked by <code>app_process</code>. Arguments will be passed to this method as though it were the Crashpad handler. This class is expected to load a native library defining <a class="el" href="namespacecrashpad.html#a6925b00a82891a9fd7a77ec6f5259094" title="The main() of the crashpad_handler binary.">crashpad::HandlerMain()</a> and pass the arguments to it. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>A vector of environment variables of the form <code>var=value</code> defining the environment in which to execute <code>app_process</code>. If this value is <code>nullptr</code>, the application's current environment will be used. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">database</td><td>The path to a Crashpad database. The handler will be started with this path as its <code>--database</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">metrics_dir</td><td>The path to an already existing directory where metrics files can be stored. The handler will be started with this path as its <code>--metrics-dir</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">url</td><td>The URL of an upload server. The handler will be started with this URL as its <code>--url</code> argument. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">annotations</td><td>Process annotations to set in each crash report. The handler will be started with an <code>--annotation</code> argument for each element in this map. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">arguments</td><td>Additional arguments to pass to the Crashpad handler. Arguments passed in other parameters and arguments required to perform the handshake are the responsibility of this method, and must not be specified in this parameter. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">socket</td><td>The server end of a socket pair. The client end should be used with an <a class="el" href="classcrashpad_1_1ExceptionHandlerClient.html" title="A client for an ExceptionHandlerServer.">ExceptionHandlerClient</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>
</div>
</div>
<a id="a1a6a1e62d90a67db782664b1fe5a952f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1a6a1e62d90a67db782664b1fe5a952f">&#9670;&nbsp;</a></span>UseSystemDefaultHandler()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void crashpad::CrashpadClient::UseSystemDefaultHandler </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Configures the process to direct its crashes to the default handler for the operating system. </p>
<p>On macOS, this sets the task’s exception port as in <a class="el" href="classcrashpad_1_1CrashpadClient.html#a35e9ce1b1771a597aa3276ec28de28a7" title="Sets the process’&#160;crash handler to a Mach port.">SetHandlerMachPort()</a>, but the exception handler used is obtained from <a class="el" href="namespacecrashpad.html#a47204f3a62646651e8f393cac2a6316b" title="Obtains the system’s default Mach exception handler for crash-type exceptions.">SystemCrashReporterHandler()</a>. If the system’s crash reporter handler cannot be determined or set, the task’s exception ports for crash-type exceptions are cleared.</p>
<p>Use of this function is strongly discouraged.</p>
<dl class="section warning"><dt>Warning</dt><dd>After a call to this function, Crashpad will no longer monitor the process for crashes until a subsequent call to <a class="el" href="classcrashpad_1_1CrashpadClient.html#a35e9ce1b1771a597aa3276ec28de28a7" title="Sets the process’&#160;crash handler to a Mach port.">SetHandlerMachPort()</a>.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This is provided as a static function to allow it to be used in situations where a <a class="el" href="classcrashpad_1_1CrashpadClient.html" title="The primary interface for an application to have Crashpad monitor it for crashes.">CrashpadClient</a> object is not otherwise available. This may be useful when a child process inherits its parent’s Crashpad handler, but wants to sever this tie. </dd></dl>
</div>
</div>
<a id="a0377d4e93ac77453f57f3c1fcae09e14"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0377d4e93ac77453f57f3c1fcae09e14">&#9670;&nbsp;</a></span>WaitForHandlerStart()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool crashpad::CrashpadClient::WaitForHandlerStart </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>timeout_ms</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>When <code>asynchronous_start</code> is used with <a class="el" href="classcrashpad_1_1CrashpadClient.html#a810ad9941bedba543bf60507c31c55da" title="Starts a Crashpad handler process, performing any necessary handshake to configure it.">StartHandler()</a>, this method can be used to block until the handler launch has been completed to retrieve status information. </p>
<p>This method should not be used unless <code>asynchronous_start</code> was <code>true</code>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">timeout_ms</td><td>The number of milliseconds to wait for a result from the background launch, or <code>0xffffffff</code> to block indefinitely.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if the hander startup succeeded, <code>false</code> otherwise, and an error message will have been logged. </dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>client/crashpad_client.h</li>
<li>client/crashpad_client_fuchsia.cc</li>
<li>client/crashpad_client_ios.cc</li>
<li>client/crashpad_client_linux.cc</li>
<li>client/crashpad_client_mac.cc</li>
<li>client/crashpad_client_win.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>