crashpad/doc/generated/man/exception_port_tool.html
2016-01-06 16:54:01 -05:00

1098 lines
28 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

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

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="AsciiDoc 8.6.9">
<title>exception_port_tool(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
/* Default font. */
body {
font-family: Georgia,serif;
}
/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
font-family: Arial,Helvetica,sans-serif;
}
body {
margin: 1em 5% 1em 5%;
}
a {
color: blue;
text-decoration: underline;
}
a:visited {
color: fuchsia;
}
em {
font-style: italic;
color: navy;
}
strong {
font-weight: bold;
color: #083194;
}
h1, h2, h3, h4, h5, h6 {
color: #527bbd;
margin-top: 1.2em;
margin-bottom: 0.5em;
line-height: 1.3;
}
h1, h2, h3 {
border-bottom: 2px solid silver;
}
h2 {
padding-top: 0.5em;
}
h3 {
float: left;
}
h3 + * {
clear: left;
}
h5 {
font-size: 1.0em;
}
div.sectionbody {
margin-left: 0;
}
hr {
border: 1px solid silver;
}
p {
margin-top: 0.5em;
margin-bottom: 0.5em;
}
ul, ol, li > p {
margin-top: 0;
}
ul > li { color: #aaa; }
ul > li > * { color: black; }
.monospaced, code, pre {
font-family: "Courier New", Courier, monospace;
font-size: inherit;
color: navy;
padding: 0;
margin: 0;
}
pre {
white-space: pre-wrap;
}
#author {
color: #527bbd;
font-weight: bold;
font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}
#footer {
font-size: small;
border-top: 2px solid silver;
padding-top: 0.5em;
margin-top: 4.0em;
}
#footer-text {
float: left;
padding-bottom: 0.5em;
}
#footer-badges {
float: right;
padding-bottom: 0.5em;
}
#preamble {
margin-top: 1.5em;
margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
margin-top: 1.0em;
margin-bottom: 1.5em;
}
div.admonitionblock {
margin-top: 2.0em;
margin-bottom: 2.0em;
margin-right: 10%;
color: #606060;
}
div.content { /* Block element content. */
padding: 0;
}
/* Block element titles. */
div.title, caption.title {
color: #527bbd;
font-weight: bold;
text-align: left;
margin-top: 1.0em;
margin-bottom: 0.5em;
}
div.title + * {
margin-top: 0;
}
td div.title:first-child {
margin-top: 0.0em;
}
div.content div.title:first-child {
margin-top: 0.0em;
}
div.content + div.title {
margin-top: 0.0em;
}
div.sidebarblock > div.content {
background: #ffffee;
border: 1px solid #dddddd;
border-left: 4px solid #f0f0f0;
padding: 0.5em;
}
div.listingblock > div.content {
border: 1px solid #dddddd;
border-left: 5px solid #f0f0f0;
background: #f8f8f8;
padding: 0.5em;
}
div.quoteblock, div.verseblock {
padding-left: 1.0em;
margin-left: 1.0em;
margin-right: 10%;
border-left: 5px solid #f0f0f0;
color: #888;
}
div.quoteblock > div.attribution {
padding-top: 0.5em;
text-align: right;
}
div.verseblock > pre.content {
font-family: inherit;
font-size: inherit;
}
div.verseblock > div.attribution {
padding-top: 0.75em;
text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
text-align: left;
}
div.admonitionblock .icon {
vertical-align: top;
font-size: 1.1em;
font-weight: bold;
text-decoration: underline;
color: #527bbd;
padding-right: 0.5em;
}
div.admonitionblock td.content {
padding-left: 0.5em;
border-left: 3px solid #dddddd;
}
div.exampleblock > div.content {
border-left: 3px solid #dddddd;
padding-left: 0.5em;
}
div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }
dl {
margin-top: 0.8em;
margin-bottom: 0.8em;
}
dt {
margin-top: 0.5em;
margin-bottom: 0;
font-style: normal;
color: navy;
}
dd > *:first-child {
margin-top: 0.1em;
}
ul, ol {
list-style-position: outside;
}
ol.arabic {
list-style-type: decimal;
}
ol.loweralpha {
list-style-type: lower-alpha;
}
ol.upperalpha {
list-style-type: upper-alpha;
}
ol.lowerroman {
list-style-type: lower-roman;
}
ol.upperroman {
list-style-type: upper-roman;
}
div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
margin-top: 0.1em;
margin-bottom: 0.1em;
}
tfoot {
font-weight: bold;
}
td > div.verse {
white-space: pre;
}
div.hdlist {
margin-top: 0.8em;
margin-bottom: 0.8em;
}
div.hdlist tr {
padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
font-weight: bold;
}
td.hdlist1 {
vertical-align: top;
font-style: normal;
padding-right: 0.8em;
color: navy;
}
td.hdlist2 {
vertical-align: top;
}
div.hdlist.compact tr {
margin: 0;
padding-bottom: 0;
}
.comment {
background: yellow;
}
.footnote, .footnoteref {
font-size: 0.8em;
}
span.footnote, span.footnoteref {
vertical-align: super;
}
#footnotes {
margin: 20px 0 20px 0;
padding: 7px 0 0 0;
}
#footnotes div.footnote {
margin: 0 0 5px 0;
}
#footnotes hr {
border: none;
border-top: 1px solid silver;
height: 1px;
text-align: left;
margin-left: 0;
width: 20%;
min-width: 100px;
}
div.colist td {
padding-right: 0.5em;
padding-bottom: 0.3em;
vertical-align: top;
}
div.colist td img {
margin-top: 0.3em;
}
@media print {
#footer-badges { display: none; }
}
#toc {
margin-bottom: 2.5em;
}
#toctitle {
color: #527bbd;
font-size: 1.1em;
font-weight: bold;
margin-top: 1.0em;
margin-bottom: 0.1em;
}
div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
margin-top: 0;
margin-bottom: 0;
}
div.toclevel2 {
margin-left: 2em;
font-size: 0.9em;
}
div.toclevel3 {
margin-left: 4em;
font-size: 0.9em;
}
div.toclevel4 {
margin-left: 6em;
font-size: 0.9em;
}
span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }
span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }
span.big { font-size: 2em; }
span.small { font-size: 0.6em; }
span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }
div.unbreakable { page-break-inside: avoid; }
/*
* xhtml11 specific
*
* */
div.tableblock {
margin-top: 1.0em;
margin-bottom: 1.5em;
}
div.tableblock > table {
border: 3px solid #527bbd;
}
thead, p.table.header {
font-weight: bold;
color: #527bbd;
}
p.table {
margin-top: 0;
}
/* Because the table frame attribute is overriden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
border-style: none;
}
div.tableblock > table[frame="hsides"] {
border-left-style: none;
border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
border-top-style: none;
border-bottom-style: none;
}
/*
* html5 specific
*
* */
table.tableblock {
margin-top: 1.0em;
margin-bottom: 1.5em;
}
thead, p.tableblock.header {
font-weight: bold;
color: #527bbd;
}
p.tableblock {
margin-top: 0;
}
table.tableblock {
border-width: 3px;
border-spacing: 0px;
border-style: solid;
border-color: #527bbd;
border-collapse: collapse;
}
th.tableblock, td.tableblock {
border-width: 1px;
padding: 4px;
border-style: solid;
border-color: #527bbd;
}
table.tableblock.frame-topbot {
border-left-style: hidden;
border-right-style: hidden;
}
table.tableblock.frame-sides {
border-top-style: hidden;
border-bottom-style: hidden;
}
table.tableblock.frame-none {
border-style: hidden;
}
th.tableblock.halign-left, td.tableblock.halign-left {
text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
text-align: right;
}
th.tableblock.valign-top, td.tableblock.valign-top {
vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
vertical-align: bottom;
}
/*
* manpage specific
*
* */
body.manpage h1 {
padding-top: 0.5em;
padding-bottom: 0.5em;
border-top: 2px solid silver;
border-bottom: 2px solid silver;
}
body.manpage h2 {
border-style: none;
}
body.manpage div.sectionbody {
margin-left: 3em;
}
@media print {
body.manpage div#toc { display: none; }
}
/* Copyright 2015 The Crashpad Authors. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License. */
/* The default AsciiDoc asciidoc.css specifies fuchsia as the visited link
* color. This has a dated appearance. Replace it with blue, the same color used
* for unvisited links. */
a:visited {
color: blue;
}
</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = { // Namespace.
/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////
/* Author: Mihai Bazon, September 2002
* http://students.infoiasi.ro/~mishoo
*
* Table Of Content generator
* Version: 0.4
*
* Feel free to use this script under the terms of the GNU General Public
* License, as long as you do not remove or alter this notice.
*/
/* modified by Troy D. Hanson, September 2006. License: GPL */
/* modified by Stuart Rackham, 2006, 2009. License: GPL */
// toclevels = 1..4.
toc: function (toclevels) {
function getText(el) {
var text = "";
for (var i = el.firstChild; i != null; i = i.nextSibling) {
if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
text += i.data;
else if (i.firstChild != null)
text += getText(i);
}
return text;
}
function TocEntry(el, text, toclevel) {
this.element = el;
this.text = text;
this.toclevel = toclevel;
}
function tocEntries(el, toclevels) {
var result = new Array;
var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
// Function that scans the DOM tree for header elements (the DOM2
// nodeIterator API would be a better technique but not supported by all
// browsers).
var iterate = function (el) {
for (var i = el.firstChild; i != null; i = i.nextSibling) {
if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
var mo = re.exec(i.tagName);
if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
}
iterate(i);
}
}
}
iterate(el);
return result;
}
var toc = document.getElementById("toc");
if (!toc) {
return;
}
// Delete existing TOC entries in case we're reloading the TOC.
var tocEntriesToRemove = [];
var i;
for (i = 0; i < toc.childNodes.length; i++) {
var entry = toc.childNodes[i];
if (entry.nodeName.toLowerCase() == 'div'
&& entry.getAttribute("class")
&& entry.getAttribute("class").match(/^toclevel/))
tocEntriesToRemove.push(entry);
}
for (i = 0; i < tocEntriesToRemove.length; i++) {
toc.removeChild(tocEntriesToRemove[i]);
}
// Rebuild TOC entries.
var entries = tocEntries(document.getElementById("content"), toclevels);
for (var i = 0; i < entries.length; ++i) {
var entry = entries[i];
if (entry.element.id == "")
entry.element.id = "_toc_" + i;
var a = document.createElement("a");
a.href = "#" + entry.element.id;
a.appendChild(document.createTextNode(entry.text));
var div = document.createElement("div");
div.appendChild(a);
div.className = "toclevel" + entry.toclevel;
toc.appendChild(div);
}
if (entries.length == 0)
toc.parentNode.removeChild(toc);
},
/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////
/* Based on footnote generation code from:
* http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
*/
footnotes: function () {
// Delete existing footnote entries in case we're reloading the footnodes.
var i;
var noteholder = document.getElementById("footnotes");
if (!noteholder) {
return;
}
var entriesToRemove = [];
for (i = 0; i < noteholder.childNodes.length; i++) {
var entry = noteholder.childNodes[i];
if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
entriesToRemove.push(entry);
}
for (i = 0; i < entriesToRemove.length; i++) {
noteholder.removeChild(entriesToRemove[i]);
}
// Rebuild footnote entries.
var cont = document.getElementById("content");
var spans = cont.getElementsByTagName("span");
var refs = {};
var n = 0;
for (i=0; i<spans.length; i++) {
if (spans[i].className == "footnote") {
n++;
var note = spans[i].getAttribute("data-note");
if (!note) {
// Use [\s\S] in place of . so multi-line matches work.
// Because JavaScript has no s (dotall) regex flag.
note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
spans[i].innerHTML =
"[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
"' title='View footnote' class='footnote'>" + n + "</a>]";
spans[i].setAttribute("data-note", note);
}
noteholder.innerHTML +=
"<div class='footnote' id='_footnote_" + n + "'>" +
"<a href='#_footnoteref_" + n + "' title='Return to text'>" +
n + "</a>. " + note + "</div>";
var id =spans[i].getAttribute("id");
if (id != null) refs["#"+id] = n;
}
}
if (n == 0)
noteholder.parentNode.removeChild(noteholder);
else {
// Process footnoterefs.
for (i=0; i<spans.length; i++) {
if (spans[i].className == "footnoteref") {
var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
href = href.match(/#.*/)[0]; // Because IE return full URL.
n = refs[href];
spans[i].innerHTML =
"[<a href='#_footnote_" + n +
"' title='View footnote' class='footnote'>" + n + "</a>]";
}
}
}
},
install: function(toclevels) {
var timerId;
function reinstall() {
asciidoc.footnotes();
if (toclevels) {
asciidoc.toc(toclevels);
}
}
function reinstallAndRemoveTimer() {
clearInterval(timerId);
reinstall();
}
timerId = setInterval(reinstall, 500);
if (document.addEventListener)
document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
else
window.onload = reinstallAndRemoveTimer;
}
}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
exception_port_tool(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>exception_port_tool -
Show and change Mach exception ports
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">Synopsis</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><strong>exception_port_tool</strong> [<em>OPTION…</em>] [<em>COMMAND</em> [<em>ARG…</em>]]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">Description</h2>
<div class="sectionbody">
<div class="paragraph"><p>Shows Mach exception ports registered for a thread, task, or host target with a
<strong>--show-&#42;</strong> option, changes Mach exception ports with <strong>--set-handler</strong>, shows
changes with a <strong>--show-new-&#42;</strong> option, and executes <em>COMMAND</em> along with any
arguments specified (<em>ARG…</em>) with the changed exception ports in effect.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">Options</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
<strong>-s</strong>, <strong>--set-handler</strong>=<em>DESCRIPTION</em>
</dt>
<dd>
<p>
Set an exception port to <em>DESCRIPTION</em>. This option may appear zero, one, or
more times.
</p>
<div class="paragraph"><p><em>DESCRIPTION</em> is formatted as a comma-separated sequence of tokens, where each
token consists of a key and value separated by an equals sign. These keys are
recognized:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
<strong>target</strong>=<em>TARGET</em>
</dt>
<dd>
<p>
<em>TARGET</em> defines which targets exception ports to set: <strong>host</strong>, <strong>task</strong>, or
<strong>thread</strong>. The default value of <em>TARGET</em> is <strong>task</strong>. Operations on <strong>host</strong> are
restricted to the superuser.
</p>
</dd>
<dt class="hdlist1">
<strong>mask</strong>=<em>MASK</em>
</dt>
<dd>
<p>
<em>MASK</em> defines the mask of exception types to handle, from
<span class="monospaced">&lt;mach/exception_types.h&gt;</span>. This can be <strong>BAD_ACCESS</strong>, <strong>BAD_INSTRUCTION</strong>,
<strong>ARITHMETIC</strong>, <strong>EMULATION</strong>, <strong>SOFTWARE</strong>, <strong>BREAKPOINT</strong>, <strong>SYSCALL</strong>, <strong>MACH_SYSCALL</strong>,
<strong>RPC_ALERT</strong>, <strong>CRASH</strong>, <strong>RESOURCE</strong>, <strong>GUARD</strong>, or <strong>CORPSE_NOTIFY</strong>. Different
exception types may be combined by combining them with pipe characters (<strong>|</strong>).
The special value <strong>ALL</strong> includes each exception type except for <strong>CRASH</strong>. To
truly specify all exception types including <strong>CRASH</strong>, use <strong>ALL|CRASH</strong>. The
default value of <em>MASK</em> is <strong>CRASH</strong>.
</p>
</dd>
<dt class="hdlist1">
<strong>behavior</strong>=<em>BEHAVIOR</em>
</dt>
<dd>
<p>
<em>BEHAVIOR</em> defines the specific exception handler routine to be called when an
exception occurs. This can be <strong>DEFAULT</strong>, <strong>STATE</strong>, or <strong>STATE_IDENTITY</strong>. <strong>MACH</strong>
may also be specified by combining them with pipe characters (<strong>|</strong>). The most
complete set of exception information is provided with <strong>STATE_IDENTITY|MACH</strong>.
Not all exception servers implement all possible behaviors. The default value of
<em>BEHAVIOR</em> is <strong>DEFAULT|MACH</strong>.
</p>
</dd>
<dt class="hdlist1">
<strong>flavor</strong>=<em>FLAVOR</em>
</dt>
<dd>
<p>
For state-carrying values of <em>BEHAVIOR</em> (those including <strong>STATE</strong> or
<strong>STATE_IDENTITY</strong>), <em>FLAVOR</em> specifies the architecture-specific thread state
flavor to be provided to the exception handler. For the x86 family, this can be
<strong>THREAD</strong>, <strong>THREAD32</strong>, <strong>THREAD64</strong>, <strong>FLOAT</strong>, <strong>FLOAT32</strong>, <strong>FLOAT64</strong>, <strong>DEBUG</strong>,
<strong>DEBUG32</strong>, or <strong>DEBUG64</strong>. The default value of <em>FLAVOR</em> is <strong>NONE</strong>, which is not
valid for state-carrying values of <em>BEHAVIOR</em>.
</p>
</dd>
<dt class="hdlist1">
<strong>handler</strong>=<em>HANDLER</em>
</dt>
<dd>
<p>
<em>HANDLER</em> defines the exception handler. <strong>NULL</strong> indicates that any existing
exception port should be cleared. <em>HANDLER</em> may also take the form
<strong>bootstrap</strong>:<em>SERVICE</em>, which will look <em>SERVICE</em> up with the bootstrap server
and set that service as the exception handler. The default value of <em>HANDLER</em> is
<strong>NULL</strong>.
</p>
</dd>
</dl></div>
</dd>
<dt class="hdlist1">
<strong>--show-bootstrap</strong>=<em>SERVICE</em>
</dt>
<dd>
<p>
Looks up <em>SERVICE</em> with the bootstrap server and shows it. Normally, the handler
port values displayed by the other <strong>--show-&#42;</strong> options are meaningless
handles, but by comparing them to the port values for known bootstrap services,
it is possible to verify that they are set as intended.
</p>
</dd>
<dt class="hdlist1">
<strong>-p</strong>, <strong>--pid</strong>=<em>PID</em>
</dt>
<dd>
<p>
For operations on the task target, including <strong>--set-handler</strong> with <em>TARGET</em> set
to <strong>task</strong>, <strong>--show-task</strong>, and <strong>--show-new-task</strong>, operates on the task associated
with process id <em>PID</em> instead of the current task associated with the tool. When
this option is supplied, <em>COMMAND</em> must not be specified.
</p>
<div class="paragraph"><p>This option uses <span class="monospaced">task_for_pid()</span> to access the process task port. This
operation may be restricted to use by the superuser, executables signed by an
authority trusted by the system, and processes otherwise permitted by
taskgated(8). Consequently, this program must normally either be signed or be
invoked by root to use this option. It is possible to install this program as a
setuid root executable to overcome this limitation.</p></div>
</dd>
<dt class="hdlist1">
<strong>-h</strong>, <strong>--show-host</strong>
</dt>
<dd>
<p>
Shows the original host exception ports before making any changes requested by
<strong>--set-handler</strong>. This option is restricted to the superuser.
</p>
</dd>
<dt class="hdlist1">
<strong>-t</strong>, <strong>--show-task</strong>
</dt>
<dd>
<p>
Shows the original task exception ports before making any changes requested by
<strong>--set-handler</strong>.
</p>
</dd>
<dt class="hdlist1">
<strong>--show-thread</strong>
</dt>
<dd>
<p>
Shows the original thread exception ports before making any changes requested by
<strong>--set-handler</strong>.
</p>
</dd>
<dt class="hdlist1">
<strong>-H</strong>, <strong>--show-new-host</strong>
</dt>
<dd>
<p>
Shows the modified host exception ports after making any changes requested by
<strong>--set-handler</strong>. This option is restricted to the superuser.
</p>
</dd>
<dt class="hdlist1">
<strong>-T</strong>, <strong>--show-new-task</strong>
</dt>
<dd>
<p>
Shows the modified task exception ports after making any changes requested by
<strong>--set-handler</strong>.
</p>
</dd>
<dt class="hdlist1">
<strong>--show-new-thread</strong>
</dt>
<dd>
<p>
Shows the modified thread exception ports after making any changes requested by
<strong>--set-handler</strong>.
</p>
</dd>
<dt class="hdlist1">
<strong>-n</strong>, <strong>--numeric</strong>
</dt>
<dd>
<p>
For <strong>--show-&#42;</strong> options, all values will be displayed numerically only. The
default is to decode numeric values and display them symbolically as well.
</p>
</dd>
<dt class="hdlist1">
<strong>--help</strong>
</dt>
<dd>
<p>
Display help and exit.
</p>
</dd>
<dt class="hdlist1">
<strong>--version</strong>
</dt>
<dd>
<p>
Output version information and exit.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">Examples</h2>
<div class="sectionbody">
<div class="paragraph"><p>Sets a new task-level exception handler for <span class="monospaced">EXC_CRASH</span>-type exceptions to the
handler registered with the bootstrap server as <span class="monospaced">svc</span>, showing the task-level
exception ports before and after the change. The old and new exception handlers
are verified by their service names as registered with the bootstrap server.
With the new task-level exception ports in effect, a program is run.</p></div>
<div class="listingblock">
<div class="content monospaced">
<pre>$ <strong>exception_port_tool --show-task --show-new-task \
--show-bootstrap=com.apple.ReportCrash --show-bootstrap=svc \
--set-handler=behavior=DEFAULT,handler=bootstrap:svc crash</strong>
service com.apple.ReportCrash 0xe03
service svc 0x1003
task exception port 0, mask 0x400 (CRASH), port 0xe03,
behavior 0x80000003 (STATE_IDENTITY|MACH), flavor 7 (THREAD)
new task exception port 0, mask 0x400 (CRASH), port 0x1003,
behavior 0x1 (DEFAULT), flavor 13 (NONE)
Illegal instruction: 4</pre>
</div></div>
<div class="paragraph"><p>Shows the task-level exception ports for the process with PID 1234. This
requires superuser permissions or the approval of taskgated(8).</p></div>
<div class="listingblock">
<div class="content monospaced">
<pre># <strong>exception_port_tool --pid=1234 --show-task</strong>
task exception port 0, mask 0x4e
(BAD_ACCESS|BAD_INSTRUCTION|ARITHMETIC|BREAKPOINT), port 0x1503,
behavior 0x1 (DEFAULT), flavor 13 (NONE)
task exception port 1, mask 0x1c00 (CRASH|RESOURCE|GUARD),
port 0x1403, behavior 0x80000003 (STATE_IDENTITY|MACH),
flavor 7 (THREAD)</pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_exit_status">Exit Status</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
<strong>0</strong>
</dt>
<dd>
<p>
Success.
</p>
</dd>
<dt class="hdlist1">
<strong>125</strong>
</dt>
<dd>
<p>
Failure, with a message printed to the standard error stream.
</p>
</dd>
<dt class="hdlist1">
<strong>126</strong>
</dt>
<dd>
<p>
The program specified by <em>COMMAND</em> was found, but could not be invoked.
</p>
</dd>
<dt class="hdlist1">
<strong>127</strong>
</dt>
<dd>
<p>
The program specified by <em>COMMAND</em> could not be found.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">See Also</h2>
<div class="sectionbody">
<div class="paragraph"><p><a href="catch_exception_tool.html">catch_exception_tool(1)</a>,
<a href="on_demand_service_tool.html">on_demand_service_tool(1)</a></p></div>
</div>
</div>
<div class="sect1">
<h2 id="_resources">Resources</h2>
<div class="sectionbody">
<div class="paragraph"><p>Crashpad home page: <a href="https://crashpad.chromium.org/">https://crashpad.chromium.org/</a>.</p></div>
<div class="paragraph"><p>Report bugs at <a href="https://crashpad.chromium.org/bug/new">https://crashpad.chromium.org/bug/new</a>.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_copyright">Copyright</h2>
<div class="sectionbody">
<div class="paragraph"><p>Copyright 2016
<a href="https://chromium.googlesource.com/crashpad/crashpad/+/master/AUTHORS">The
Crashpad Authors</a>.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_license">License</h2>
<div class="sectionbody">
<div class="paragraph"><p>Licensed under the Apache License, Version 2.0 (the “License”);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at</p></div>
<div class="literalblock">
<div class="content monospaced">
<pre><a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></pre>
</div></div>
<div class="paragraph"><p>Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an “AS IS” BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr></div>
<div id="footer">
<div id="footer-text">
Crashpad 0.8.0<br>
Last updated September 4, 2015
</div>
</div>
</body>
</html>