| OLD | NEW |
| (Empty) |
| 1 // Copyright 2014 The Crashpad Authors. All rights reserved. | |
| 2 // | |
| 3 // Licensed under the Apache License, Version 2.0 (the "License"); | |
| 4 // you may not use this file except in compliance with the License. | |
| 5 // You may obtain a copy of the License at | |
| 6 // | |
| 7 // http://www.apache.org/licenses/LICENSE-2.0 | |
| 8 // | |
| 9 // Unless required by applicable law or agreed to in writing, software | |
| 10 // distributed under the License is distributed on an "AS IS" BASIS, | |
| 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 12 // See the License for the specific language governing permissions and | |
| 13 // limitations under the License. | |
| 14 | |
| 15 :doctype: manpage | |
| 16 | |
| 17 = catch_exception_tool(1) | |
| 18 | |
| 19 == Name | |
| 20 | |
| 21 catch_exception_tool - Catch Mach exceptions and display information about them | |
| 22 | |
| 23 == Synopsis | |
| 24 | |
| 25 [verse] | |
| 26 *catch_exception_tool* *-m* 'SERVICE' ['OPTION…'] | |
| 27 | |
| 28 == Description | |
| 29 | |
| 30 Runs a Mach exception server registered with the bootstrap server under the name | |
| 31 'SERVICE'. The exception server is capable of receiving exceptions for | |
| 32 “behavior” values of +EXCEPTION_DEFAULT+, +EXCEPTION_STATE+, and | |
| 33 +EXCEPTION_STATE_IDENTITY+, with or without +MACH_EXCEPTION_CODES+ set. | |
| 34 | |
| 35 == Options | |
| 36 | |
| 37 *-f*, *--file*='FILE':: | |
| 38 Information about the exception will be appended to 'FILE' instead of the | |
| 39 standard output stream. | |
| 40 | |
| 41 *-m*, *--mach-service*='SERVICE':: | |
| 42 Check in with the bootstrap server under the name 'SERVICE'. This service name | |
| 43 may already be reserved with the bootstrap server in cases where this tool is | |
| 44 started by launchd(8) as a result of a message being sent to a service declared | |
| 45 in a job’s +MachServices+ dictionary (see launchd.plist(5)). The service name | |
| 46 may also be completely unknown to the system. | |
| 47 | |
| 48 *-p*, *--persistent*:: | |
| 49 Continue processing exceptions after the first one. The default mode is | |
| 50 one-shot, where this tool exits after processing the first exception. | |
| 51 | |
| 52 *-t*, *--timeout*='TIMEOUT':: | |
| 53 Run for a maximum of 'TIMEOUT' seconds. Specify +0+ to request non-blocking | |
| 54 operation, in which the tool exits immediately if no exception is received. In | |
| 55 *--persistent* mode, 'TIMEOUT' applies to the overall duration that this tool | |
| 56 will run, not to the processing of individual exceptions. When *--timeout* is | |
| 57 not specified, this tool will block indefinitely while waiting for an exception. | |
| 58 | |
| 59 *--help*:: | |
| 60 Display help and exit. | |
| 61 | |
| 62 *--version*:: | |
| 63 Output version information and exit. | |
| 64 | |
| 65 == Examples | |
| 66 | |
| 67 Run a one-shot blocking exception server registered with the bootstrap server | |
| 68 under the name +svc+: | |
| 69 [subs="quotes"] | |
| 70 ---- | |
| 71 $ *catch_exception_tool --mach-service=svc --file=out &* | |
| 72 [1] 1233 | |
| 73 $ *exception_port_tool --set-handler=handler=bootstrap:svc crasher* | |
| 74 Illegal instruction: 4 | |
| 75 [1]+ Done catch_exception_tool --mach-service=svc --file=out | |
| 76 $ *cat out* | |
| 77 catch_exception_tool: | |
| 78 behavior EXCEPTION_DEFAULT|MACH_EXCEPTION_CODES, | |
| 79 pid 1234, thread 56789, exception EXC_CRASH, codes[2] 0x4200001, 0, | |
| 80 original exception EXC_BAD_INSTRUCTION, original code[0] 1, | |
| 81 signal SIGILL | |
| 82 ---- | |
| 83 | |
| 84 Run an on-demand exception server started by launchd(5) available via the | |
| 85 bootstrap server under the name +svc+: | |
| 86 [subs="quotes"] | |
| 87 ---- | |
| 88 $ *on_demand_service_tool --load --label=catch_exception \ | |
| 89 --mach-service=svc \ | |
| 90 $(which catch_exception_tool) --mach-service=svc \ | |
| 91 --file=/tmp/out --persistent --timeout=0* | |
| 92 $ *exception_port_tool --set-handler=handler=bootstrap:svc crasher* | |
| 93 Illegal instruction: 4 | |
| 94 $ *on_demand_service_tool --unload --label=catch_exception* | |
| 95 $ *cat /tmp/out* | |
| 96 catch_exception_tool: | |
| 97 behavior EXCEPTION_DEFAULT|MACH_EXCEPTION_CODES, | |
| 98 pid 2468, thread 13579, exception EXC_CRASH, codes[2] 0x4200001, 0, | |
| 99 original exception EXC_BAD_INSTRUCTION, original code[0] 1, | |
| 100 signal SIGILL | |
| 101 ---- | |
| 102 | |
| 103 == Exit Status | |
| 104 | |
| 105 *0*:: | |
| 106 Success. In *--persistent* mode with a *--timeout* set, it is considered | |
| 107 successful if at least one exception was caught when the timer expires. | |
| 108 | |
| 109 *1*:: | |
| 110 Failure, with a message printed to the standard error stream. | |
| 111 | |
| 112 == See Also | |
| 113 | |
| 114 exception_port_tool(1), | |
| 115 on_demand_service_tool(1) | |
| 116 | |
| 117 include::man_footer.ad[] | |
| OLD | NEW |