| OLD | NEW |
| 1 // Copyright 2014 The Crashpad Authors. All rights reserved. | 1 // Copyright 2014 The Crashpad Authors. All rights reserved. |
| 2 // | 2 // |
| 3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 // you may not use this file except in compliance with 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 | 5 // You may obtain a copy of the License at |
| 6 // | 6 // |
| 7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
| 8 // | 8 // |
| 9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
| 10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 *crashpad_handler* ['OPTION…'] | 26 *crashpad_handler* ['OPTION…'] |
| 27 | 27 |
| 28 == Description | 28 == Description |
| 29 | 29 |
| 30 This program is Crashpad’s main exception-handling server. It is responsible for | 30 This program is Crashpad’s main exception-handling server. It is responsible for |
| 31 catching exceptions, writing crash reports, and uploading them to a crash report | 31 catching exceptions, writing crash reports, and uploading them to a crash report |
| 32 collection server. Uploads are disabled by default, and can only be enabled by a | 32 collection server. Uploads are disabled by default, and can only be enabled by a |
| 33 Crashpad client using the Crashpad client library, typically in response to a | 33 Crashpad client using the Crashpad client library, typically in response to a |
| 34 user requesting this behavior. | 34 user requesting this behavior. |
| 35 | 35 |
| 36 On OS X, this server is normally started by its initial client, and it performs | 36 On OS X, this server may be started by its initial client, in which case it |
| 37 a handshake with this client via a pipe established by the client that is | 37 performs a handshake with this client via a pipe established by the client that |
| 38 inherited by the server, referenced by the *--handshake-fd* argument. During the | 38 is inherited by the server, referenced by the *--handshake-fd* argument. During |
| 39 handshake, the server furnishes the client with a send right that the client may | 39 the handshake, the server furnishes the client with a send right that the client |
| 40 use as an exception port. The server retains the corresponding receive right, | 40 may use as an exception port. The server retains the corresponding receive |
| 41 which it monitors for exception messages. When the receive right loses all | 41 right, which it monitors for exception messages. When the receive right loses |
| 42 senders, the server exits after allowing any upload in progress to complete. | 42 all senders, the server exits after allowing any upload in progress to complete. |
| 43 |
| 44 Alternatively, on OS X, this server may be started from launchd(8), where it |
| 45 receives the Mach service name in a *--mach-service* argument. It checks in with |
| 46 the bootstrap server under this service name, and clients may look it up with |
| 47 the bootstrap server under this service name. It monitors this service for |
| 48 exception messages. Upon receipt of +SIGTERM+, the server exits after allowing |
| 49 any upload in progress to complete. +SIGTERM+ is normally sent by launchd(8) |
| 50 when it determines that the server should exit. |
| 43 | 51 |
| 44 On Windows, clients register with this server by communicating with it via the | 52 On Windows, clients register with this server by communicating with it via the |
| 45 named pipe identified by the *--pipe-name* argument. During registration, a | 53 named pipe identified by the *--pipe-name* argument. During registration, a |
| 46 client provides the server with an OS event object that it will signal should it | 54 client provides the server with an OS event object that it will signal should it |
| 47 crash. The server obtains the client’s process handle and waits on the crash | 55 crash. The server obtains the client’s process handle and waits on the crash |
| 48 event object for a crash, as well as the client’s process handle for the client | 56 event object for a crash, as well as the client’s process handle for the client |
| 49 to exit cleanly without crashing. When the server loses all clients and | 57 to exit cleanly without crashing. When the server loses all clients and |
| 50 *--persistent* is not specified, it exits after allowing any upload in progress | 58 *--persistent* is not specified, it exits after allowing any upload in progress |
| 51 to complete. | 59 to complete. |
| 52 | 60 |
| 53 It is not normally appropriate to invoke this program directly. Usually, it will | 61 It is not normally appropriate to invoke this program directly. Usually, it will |
| 54 be invoked by a Crashpad client using the Crashpad client library. Arbitrary | 62 be invoked by a Crashpad client using the Crashpad client library, or started by |
| 55 programs may be run with a Crashpad handler by using | 63 another system service. On OS X, arbitrary programs may be run with a Crashpad |
| 56 man_link:run_with_crashpad[1] to establish the Crashpad client environment | 64 handler by using man_link:run_with_crashpad[1] to establish the Crashpad client |
| 57 before running a program. | 65 environment before running a program. |
| 58 | 66 |
| 59 == Options | 67 == Options |
| 60 *--annotation*='KEY=VALUE':: | 68 *--annotation*='KEY=VALUE':: |
| 61 Sets a process-level annotation mapping 'KEY' to 'VALUE' in each crash report | 69 Sets a process-level annotation mapping 'KEY' to 'VALUE' in each crash report |
| 62 that is written. This option may appear zero, one, or multiple times. | 70 that is written. This option may appear zero, one, or multiple times. |
| 63 + | 71 + |
| 64 Most annotations should be provided by the Crashpad client as module-level | 72 Most annotations should be provided by the Crashpad client as module-level |
| 65 annotations instead of process-level annotations. Module-level annotations are | 73 annotations instead of process-level annotations. Module-level annotations are |
| 66 more flexible in that they can be modified and cleared during the client | 74 more flexible in that they can be modified and cleared during the client |
| 67 program’s lifetime. Module-level annotations can be set via the Crashpad client | 75 program’s lifetime. Module-level annotations can be set via the Crashpad client |
| 68 library. Process-level annotations are useful for annotations that the | 76 library. Process-level annotations are useful for annotations that the |
| 69 collection server requires be present, that have fixed values, and for cases | 77 collection server requires be present, that have fixed values, and for cases |
| 70 where a program that does not use the Crashpad client library is being | 78 where a program that does not use the Crashpad client library is being |
| 71 monitored. | 79 monitored. |
| 72 + | 80 + |
| 73 Breakpad-type collection servers only require the +"prod"+ and +"ver"+ | 81 Breakpad-type collection servers only require the +"prod"+ and +"ver"+ |
| 74 annotations, which should be set to the product name or identifier and product | 82 annotations, which should be set to the product name or identifier and product |
| 75 version, respectively. It is unusual to specify other annotations as | 83 version, respectively. It is unusual to specify other annotations as |
| 76 process-level annotations via this argument. | 84 process-level annotations via this argument. |
| 77 | 85 |
| 78 *--database*='PATH':: | 86 *--database*='PATH':: |
| 79 Use 'PATH' as the path to the Crashpad crash report database. This option is | 87 Use 'PATH' as the path to the Crashpad crash report database. This option is |
| 80 required. Crash reports are written to this database, and if uploads are | 88 required. Crash reports are written to this database, and if uploads are |
| 81 enabled, uploaded from this database to a crash report collection server. If the | 89 enabled, uploaded from this database to a crash report collection server. If the |
| 82 database does not exist, it will be created, provided that the parent directory | 90 database does not exist, it will be created, provided that the parent directory |
| 83 of 'PATH' exists. | 91 of 'PATH' exists. |
| 84 | 92 |
| 85 *--handshake-fd*='FD':: | 93 *--handshake-fd*='FD':: |
| 86 Perform the handshake with the initial client on the file descriptor at 'FD'. | 94 Perform the handshake with the initial client on the file descriptor at 'FD'. |
| 87 This option is required. This option is only valid on Mac OS X. | 95 Either this option or *--mach-service*, but not both, is required. This option |
| 96 is only valid on OS X. |
| 97 |
| 98 *--mach-service*='SERVICE':: |
| 99 Check in with the bootstrap server under the name 'SERVICE'. Either this option |
| 100 or *--handshake-fd*, but not both, is required. This option is only valid on OS |
| 101 X. |
| 102 + |
| 103 'SERVICE' may already be reserved with the bootstrap server in cases where this |
| 104 tool is started by launchd(8) as a result of a message being sent to a service |
| 105 declared in a job’s +MachServices+ dictionary (see launchd.plist(5)). The |
| 106 service name may also be completely unknown to the system. |
| 88 | 107 |
| 89 *--persistent*:: | 108 *--persistent*:: |
| 90 Continue running after the last client exits. If this option is not specified, | 109 Continue running after the last client exits. If this option is not specified, |
| 91 this server will exit as soon as it has no clients, although on startup, it | 110 this server will exit as soon as it has no clients, although on startup, it |
| 92 always waits for at least one client to connect. This option is only valid on | 111 always waits for at least one client to connect. This option is only valid on |
| 93 Windows. | 112 Windows. |
| 94 | 113 |
| 95 *--pipe-name*='PIPE':: | 114 *--pipe-name*='PIPE':: |
| 96 Listen on the given pipe name for connections from clients. 'PIPE' must be of | 115 Listen on the given pipe name for connections from clients. 'PIPE' must be of |
| 97 the form +\\.\pipe\<somename>+. This option is required. This option is only | 116 the form +\\.\pipe\<somename>+. This option is required. This option is only |
| (...skipping 28 matching lines...) Expand all Loading... |
| 126 Failure, with a message printed to the standard error stream. | 145 Failure, with a message printed to the standard error stream. |
| 127 | 146 |
| 128 == See Also | 147 == See Also |
| 129 | 148 |
| 130 man_link:catch_exception_tool[1], | 149 man_link:catch_exception_tool[1], |
| 131 man_link:crashpad_database_util[1], | 150 man_link:crashpad_database_util[1], |
| 132 man_link:generate_dump[1], | 151 man_link:generate_dump[1], |
| 133 man_link:run_with_crashpad[1] | 152 man_link:run_with_crashpad[1] |
| 134 | 153 |
| 135 include::../doc/support/man_footer.ad[] | 154 include::../doc/support/man_footer.ad[] |
| OLD | NEW |