Plausible CrashReporter
|
![]() |
Enumerations | |
enum | PLCrashReporterError { PLCrashReporterErrorUnknown = 0, PLCrashReporterErrorOperatingSystem = 1, PLCrashReporterErrorCrashReportInvalid = 2, PLCrashReporterErrorResourceBusy = 3 } |
NSError codes in the Plausible Crash Reporter error domain. More... | |
enum | PLCrashReporterSignalHandlerType { PLCrashReporterSignalHandlerTypeBSD = 0, PLCrashReporterSignalHandlerTypeMach = 1 } |
Supported mechanisms for trapping and handling crashes. More... | |
enum | PLCrashReporterSymbolicationStrategy { PLCrashReporterSymbolicationStrategyNone = 0, PLCrashReporterSymbolicationStrategySymbolTable = 1 << 0, PLCrashReporterSymbolicationStrategyObjC = 1 << 1, PLCrashReporterSymbolicationStrategyAll = (PLCrashReporterSymbolicationStrategySymbolTable|PLCrashReporterSymbolicationStrategyObjC) } |
Supported mechanisms for performing local symbolication. More... | |
enum | PLCrashReportTextFormat { PLCrashReportTextFormatiOS = 0 } |
Supported text output formats. More... | |
enum PLCrashReporterError |
NSError codes in the Plausible Crash Reporter error domain.
Supported mechanisms for trapping and handling crashes.
Enumerator | |
---|---|
PLCrashReporterSignalHandlerTypeBSD |
Trap fatal signals via a sigaction(2)-registered BSD signal handler. PLCrashReporter's signal handler will supersede previously registered handlers; existing handlers will not be called. This behavior may be modified in a future release, and should not be relied upon as a mechanism to prevent existing signal handlers from being called. There are some limitations to signal-based crash handling on Mac OS X and iOS; specifically:
|
PLCrashReporterSignalHandlerTypeMach |
Trap fatal signals via a Mach exception server. If any existing Mach exception server has been registered for the task, exceptions will be forwarded to that exception handler. Should the exceptions be handled by an existing handler, no report will be generated by PLCrashReporter.
On Mac OS X, the Mach exception implementation is fully supported, using publicly available API – note, however, that some kernel-internal constants, as well as architecture-specific trap information, may be required to fully interpret a Mach exception's root cause.
On iOS, the APIs required for a complete implementation are not fully public. The exposed surface of undocumented API usage is relatively low, and there has been strong user demand to implement Mach exception handling regardless of concerns over API visiblity. Given this, we've included Mach exception handling as an optional feature, with both build-time and runtime configuration to disable its inclusion or use, respectively.
The Mach exception handler executes in-process, and will interfere with debuggers when they attempt to suspend all active threads (which will include the Mach exception handler). Mach-based handling should not be used when a debugger is attached.
For more information, refer to Mach Exceptions on Mac OS X and iOS. |
Supported mechanisms for performing local symbolication.
Local symbolication is performed using inexact heuristics and symbol data available at runtime; it may return information that is incorrect. This may still be useful in the case where DWARF data is unavailable for a given build; in that case, it can provide function and method names (though not line numbers) for a crash report that may otherwise be unusable.
Note, however, this comes at the cost of a significant increase in code that must run within the critical crash reporting section, where failures may result in crash reports being corrupted or left unwritten. In addition, some of the provided symbolication strategies rely on knowledge of runtime internals that may change in future iOS releases. Given that DWARF symbolication data will always be more accurate, and the risks inherent in executing considerably more code at crash time, it is strongly recommended that local symbolication only be enabled for non-release builds.
Multiple symbolication strategies may be enabled, in which case a best-match heuristic will be applied to the results.