AI-generated Key Takeaways
-
Partners can utilize Crashpad's crash handlers to generate crash reports within the cache directory.
-
Integrating Crashpad involves adding
crash_handler.ccandcrash_handler.hto thestarboard_platformtarget's sources. -
SbSystemGetExtensionmust handlekCobaltExtensionCrashHandlerNameto enable crash handler functionality. -
The
InstallCrashpadHandler()hook should be invoked immediately following the installation of system crash handlers.
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:
'<(DEPTH)/starboard/shared/starboard/crash_handler.cc',
'<(DEPTH)/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::common::GetCrashHandlerApi();
}
return NULL;
}
- 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/crashpad/wrapper/wrapper.h"
int main(int argc, char** argv) {
...
starboard::shared::signal::InstallCrashSignalHandlers();
starboard::shared::signal::InstallSuspendSignalHandlers();
std::string ca_certificates_path = starboard::common::GetCACertificatesPath();
third_party::crashpad::wrapper::InstallCrashpadHandler(ca_certificates_path);
int result = application.Run(argc, argv);
...
}