2022-04-02 01:21:55 +00:00
|
|
|
|
<!--
|
2023-01-28 04:54:20 +00:00
|
|
|
|
Copyright 2014 The Crashpad Authors
|
2022-04-02 01:21:55 +00:00
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
-->
|
|
|
|
|
|
|
|
|
|
# catch_exception_tool(1)
|
|
|
|
|
|
|
|
|
|
## Name
|
|
|
|
|
|
|
|
|
|
catch_exception_tool—Catch Mach exceptions and display information about them
|
|
|
|
|
|
|
|
|
|
## Synopsis
|
|
|
|
|
|
|
|
|
|
**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.
|
|
|
|
|
|
|
|
|
|
* **-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. Specify `0` to request non-blocking
|
|
|
|
|
operation, in which the tool exits immediately if no exception is received.
|
|
|
|
|
In **--persistent** mode, _TIMEOUT_ applies to the overall duration that this
|
|
|
|
|
tool will run, not to the processing of individual exceptions. When
|
|
|
|
|
**--timeout** is not specified, this tool will block indefinitely while
|
|
|
|
|
waiting for an exception.
|
|
|
|
|
|
|
|
|
|
* **--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`:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ 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`:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ `on_demand_service_tool --load --label=catch_exception \
|
|
|
|
|
--mach-service=svc \
|
|
|
|
|
$(which catch_exception_tool) --mach-service=svc \
|
|
|
|
|
--file=/tmp/out --persistent --timeout=0
|
|
|
|
|
$ 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)](exception_port_tool.md),
|
|
|
|
|
[on_demand_service_tool(1)](on_demand_service_tool.md)
|
|
|
|
|
|
|
|
|
|
## Resources
|
|
|
|
|
|
|
|
|
|
Crashpad home page: https://crashpad.chromium.org/.
|
|
|
|
|
|
|
|
|
|
Report bugs at https://crashpad.chromium.org/bug/new.
|
|
|
|
|
|
|
|
|
|
## Copyright
|
|
|
|
|
|
|
|
|
|
Copyright 2014 [The Crashpad
|
2023-01-28 04:54:20 +00:00
|
|
|
|
Authors](https://chromium.googlesource.com/crashpad/crashpad/+/main/AUTHORS).
|
2022-04-02 01:21:55 +00:00
|
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
|
|
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.
|