blob: 8aa11d88c16bee6984ee6163f2a0c19f2d56002b [file] [log] [blame] [view]
# Installing Crash Handlers in Cobalt
Partners can install Crashpad's crash handlers to create crash reports in the
cache directory. This is done by:
1. Adding the following files to the `starboard_platform` target's sources:
```
'<(DEPTH)/starboard/shared/starboard/crash_handler.cc',
'<(DEPTH)/starboard/shared/starboard/crash_handler.h',
```
2. Handling `kCobaltExtensionCrashHandlerName` in the implementation of
`SbSystemGetExtension`:
```
#include "starboard/system.h"
#include "cobalt/extension/crash_handler.h"
#include "starboard/shared/starboard/crash_handler.h"
...
const void* SbSystemGetExtension(const char* name) {
...
if (SbStringCompareAll(name, kCobaltExtensionCrashHandlerName) == 0) {
return starboard::common::GetCrashHandlerApi();
}
return NULL;
}
```
3. Calling the `third_party::crashpad::wrapper::InstallCrashpadHandler()` hook
directly after installing system crash handlers. On linux, for example, this
could look like:
```
#include "third_party/crashpad/wrapper/wrapper.h"
int main(int argc, char** argv) {
...
starboard::shared::signal::InstallCrashSignalHandlers();
starboard::shared::signal::InstallSuspendSignalHandlers();
third_party::crashpad::wrapper::InstallCrashpadHandler();
int result = application.Run(argc, argv);
...
}
```