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[] |