electron/docs/api/crash-reporter.md

97 lines
4 KiB
Markdown
Raw Normal View History

2015-08-27 15:11:51 +00:00
# crashReporter
2013-08-14 22:43:35 +00:00
2016-04-21 22:39:12 +00:00
> Submit crash reports to a remote server.
2015-08-25 12:01:57 +00:00
2016-11-03 17:26:00 +00:00
Process: [Main](../tutorial/quick-start.md#main-process), [Renderer](../tutorial/quick-start.md#renderer-process)
2015-08-25 12:16:20 +00:00
The following is an example of automatically submitting a crash report to a
remote server:
2013-08-14 22:43:35 +00:00
```javascript
const {crashReporter} = require('electron')
2015-08-28 17:50:30 +00:00
2013-11-14 05:39:44 +00:00
crashReporter.start({
productName: 'YourName',
companyName: 'YourCompany',
2015-11-13 08:03:40 +00:00
submitURL: 'https://your-domain.com/url-to-submit',
2013-11-14 05:39:44 +00:00
autoSubmit: true
})
2013-08-14 22:43:35 +00:00
```
For setting up a server to accept and process crash reports, you can use
following projects:
* [socorro](https://github.com/mozilla/socorro)
2016-05-06 17:09:24 +00:00
* [mini-breakpad-server](https://github.com/electron/mini-breakpad-server)
2016-10-05 21:10:45 +00:00
Crash reports are saved locally in an application-specific temp directory folder.
For a `productName` of `YourName`, crash reports will be stored in a folder
named `YourName Crashes` inside the temp directory. You can customize this temp
directory location for your app by calling the `app.setPath('temp', '/my/custom/temp')`
API before starting the crash reporter.
2015-08-25 12:01:57 +00:00
## Methods
2016-11-21 23:42:24 +00:00
The `crashReporter` module has the following methods:
2015-08-25 12:01:57 +00:00
### `crashReporter.start(options)`
* `options` Object
2016-10-30 10:46:20 +00:00
* `companyName` String (optional)
* `submitURL` String - URL that crash reports will be sent to as POST.
2016-09-08 18:52:21 +00:00
* `productName` String (optional) - Defaults to `app.getName()`.
2016-10-30 10:46:20 +00:00
* `autoSubmit` Boolean (optional) - Send the crash report without user interaction.
Default is `true`.
2016-10-30 10:46:20 +00:00
* `ignoreSystemCrashHandler` Boolean (optional) - Default is `false`.
* `extra` Object (optional) - An object you can define that will be sent along with the
report. Only string properties are sent correctly, Nested objects are not
supported.
You are required to call this method before using other `crashReporter` APIs
and in each process (main/renderer) from which you want to collect crash reports.
You can pass different options to `crashReporter.start` while calling from different processes.
**Note:** On Windows and Linux, Electron uses `breakpad` for crash collection and reporting.
Crashes can be collected from the main and renderer process, but not from the child processes
created via `child_process` module.
**Note:** On macOS, Electron uses a new `crashpad` client for crash collection and reporting.
Crashes can be collected from the main, renderer and any of the child processes created via the `child_process` module.
If you want to enable crash reporting, initializing `crashpad` from the main process using `crashReporter.start` is mandatory
regardless of which process you want to collect crashes from. Once initialized this way, the crashpad handler collects
crashes from all processes. You still have to call `crashReporter.start` from the renderer process, otherwise crashes from
renderer processes will get reported without `companyName`, `productName` or any of the `extra` information.
2015-05-30 02:03:59 +00:00
2015-08-25 12:01:57 +00:00
### `crashReporter.getLastCrashReport()`
2014-11-11 12:20:36 +00:00
Returns [`CrashReport`](structures/crash-report.md):
Returns the date and ID of the last crash report. If no crash reports have been
sent or the crash reporter has not been started, `null` is returned.
2014-11-11 12:20:36 +00:00
2015-08-25 12:01:57 +00:00
### `crashReporter.getUploadedReports()`
2015-06-05 11:05:55 +00:00
Returns [`CrashReport[]`](structures/crash-report.md):
2015-08-26 23:28:44 +00:00
Returns all uploaded crash reports. Each report contains the date and uploaded
ID.
2015-06-05 11:05:55 +00:00
2016-11-21 23:42:24 +00:00
## Crash Report Payload
The crash reporter will send the following data to the `submitURL` as
a `multipart/form-data` `POST`:
2015-08-25 12:18:02 +00:00
* `ver` String - The version of Electron.
* `platform` String - e.g. 'win32'.
* `process_type` String - e.g. 'renderer'.
* `guid` String - e.g. '5e1286fc-da97-479e-918b-6bfb0c3d1c72'
2015-08-25 12:18:02 +00:00
* `_version` String - The version in `package.json`.
2015-08-25 12:16:20 +00:00
* `_productName` String - The product name in the `crashReporter` `options`
2015-08-25 12:18:02 +00:00
object.
* `prod` String - Name of the underlying product. In this case Electron.
2015-08-25 12:16:20 +00:00
* `_companyName` String - The company name in the `crashReporter` `options`
2015-08-25 12:18:02 +00:00
object.
* `upload_file_minidump` File - The crash report in the format of `minidump`.
2016-10-10 14:31:05 +00:00
* All level one properties of the `extra` object in the `crashReporter`
`options` object.