| Index: tools/catch_exception_tool.ad
|
| diff --git a/tools/catch_exception_tool.ad b/tools/catch_exception_tool.ad
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f411dd9cbff685dfbd603960c1925953db533950
|
| --- /dev/null
|
| +++ b/tools/catch_exception_tool.ad
|
| @@ -0,0 +1,121 @@
|
| +// Copyright 2014 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.
|
| +
|
| +:doctype: manpage
|
| +
|
| += catch_exception_tool(1)
|
| +
|
| +== Name
|
| +
|
| +catch_exception_tool - Catch Mach exceptions and display information about them
|
| +
|
| +== Synopsis
|
| +
|
| +[verse]
|
| +*catch_exception_tool* *-m* 'SERVICE' ['OPTION…']
|
| +
|
| +== Description
|
| +
|
| +Runs a Mach exception server registered with the bootstrap server under the name
|
| +'SERVICE'. The exception server is capable of receiving exceptions for
|
| +“behavior” values of +EXCEPTION_DEFAULT+, +EXCEPTION_STATE+, and
|
| ++EXCEPTION_STATE_IDENTITY+, with or without +MACH_EXCEPTION_CODES+ set.
|
| +
|
| +== Options
|
| +
|
| +*-f*, *--file*='FILE'::
|
| +Information about the exception will be appended to 'FILE' instead of the
|
| +standard output stream.
|
| +
|
| +*-m*, *--mach_service*='SERVICE'::
|
| +Check in with the bootstrap server under the name 'SERVICE'. This service name
|
| +may already be reserved with the bootstrap server in cases where this tool is
|
| +started by launchd(8) as a result of a message being sent to a service declared
|
| +in a job’s +MachServices+ dictionary (see launchd.plist(5)). The service name
|
| +may also be completely unknown to the system.
|
| +
|
| +*-n*, *--nonblocking*::
|
| +Don’t wait for an exception to occur if one is not received immediately. In
|
| +nonblocking mode, this tool exits immediately if no exception is received. The
|
| +default mode is blocking.
|
| +
|
| +*-p*, *--persistent*::
|
| +Continue processing exceptions after the first one. The default mode is
|
| +one-shot, where this tool exits after processing the first exception.
|
| +
|
| +*-t*, *--timeout*='TIMEOUT'::
|
| +Run for a maximum of 'TIMEOUT' seconds. This option only has an effect in
|
| +blocking mode (when *--nonblocking* is not specified). In *--persistent* mode,
|
| +'TIMEOUT' applies to the overall duration that this tool will run, not to the
|
| +processing of individual exceptions.
|
| +
|
| +*--help*::
|
| +Display help and exit.
|
| +
|
| +*--version*::
|
| +Output version information and exit.
|
| +
|
| +== Examples
|
| +
|
| +Run a one-shot blocking exception server registered with the bootstrap server
|
| +under the name +svc+:
|
| +[subs="quotes"]
|
| +----
|
| +$ *catch_exception_tool --mach_service=svc --file=out &*
|
| +[1] 1233
|
| +$ *exception_port_tool --set_handler=handler=bootstrap:svc crasher*
|
| +Illegal instruction: 4
|
| +[1]+ Done catch_exception_tool --mach_service=svc --file=out
|
| +$ *cat out*
|
| +catch_exception_tool:
|
| +behavior EXCEPTION_DEFAULT|MACH_EXCEPTION_CODES,
|
| +pid 1234, thread 56789, exception EXC_CRASH, codes[2] 0x4200001, 0,
|
| +original exception EXC_BAD_INSTRUCTION, original code[0] 1,
|
| +signal SIGILL
|
| +----
|
| +
|
| +Run an on-demand exception server started by launchd(5) available via the
|
| +bootstrap server under the name +svc+:
|
| +[subs="quotes"]
|
| +----
|
| +$ *on_demand_service_tool --load --label=catch_exception \
|
| + --mach_service=svc \
|
| + $(which catch_exception_tool) --mach_service=svc \
|
| + --file=/tmp/out --nonblocking --persistent*
|
| +$ *exception_port_tool --set_handler=handler=bootstrap:svc crasher*
|
| +Illegal instruction: 4
|
| +$ *on_demand_service_tool --unload --label=catch_exception*
|
| +$ *cat /tmp/out*
|
| +catch_exception_tool:
|
| +behavior EXCEPTION_DEFAULT|MACH_EXCEPTION_CODES,
|
| +pid 2468, thread 13579, exception EXC_CRASH, codes[2] 0x4200001, 0,
|
| +original exception EXC_BAD_INSTRUCTION, original code[0] 1,
|
| +signal SIGILL
|
| +----
|
| +
|
| +== Exit Status
|
| +
|
| +*0*::
|
| +Success. In *--persistent* mode with a *--timeout* set, it is considered
|
| +successful if at least one exception was caught when the timer expires.
|
| +
|
| +*1*::
|
| +Failure, with a message printed to the standard error stream.
|
| +
|
| +== See Also
|
| +
|
| +exception_port_tool(1),
|
| +on_demand_service_tool(1)
|
| +
|
| +include::man_footer.ad[]
|
|
|