Partners can install Crashpad's crash handlers to create crash reports in the cache directory. This is done by:
- Adding the following files to the
starboard_platformtarget's sources:
"//starboard/shared/starboard/crash_handler.cc",
"//starboard/shared/starboard/crash_handler.h",
- Handling
kCobaltExtensionCrashHandlerNamein the implementation ofSbSystemGetExtension:
#include "starboard/system.h"
#include "starboard/extension/crash_handler.h"
#include "starboard/shared/starboard/crash_handler.h"
...
const void* SbSystemGetExtension(const char* name) {
...
if (SbStringCompareAll(name, kCobaltExtensionCrashHandlerName) == 0) {
return starboard::GetCrashHandlerApi();
}
return NULL;
}
- Calling the
crashpad::InstallCrashpadHandler()hook directly after installing system crash handlers. On linux, for example, this could look like:
#include "starboard/crashpad_wrapper/wrapper.h"
int main(int argc, char** argv) {
...
starboard::InstallCrashSignalHandlers();
starboard::InstallSuspendSignalHandlers();
std::string ca_certificates_path = starboard::GetCACertificatesPath();
crashpad::InstallCrashpadHandler(ca_certificates_path);
int result = application.Run(argc, argv);
...
}
NOTE: platforms using Evergreen should not call
crashpad::InstallCrashpadHandler() from their own application code. Starting
with Cobalt 26, this function is now called from shared Evergreen code linked
into the loader_app.