The breakpoint exception type indicates a trace trap interrupted the process. A trace trap gives an attached debugger the chance to interrupt the process at a specific point in its execution. On ARM processors, this appears as EXC_BREAKPOINT (SIGTRAP).
On x86_64
processors, this appears as EXC_BAD_INSTRUCTION (SIGILL)
.
The Swift runtime uses trace traps for specific types of unrecoverable errors—see Addressing Crashes from Swift Runtime Errors for information on those errors. Some lower-level libraries, such as Dispatch, trap the process with this exception upon encountering an unrecoverable error, and log additional information about the error in the Additional Diagnostic Information
section of the crash report. See Diagnostic Messages for information about those messages.
If you want to use the same technique in your own code for unrecoverable errors, call the __builtin_trap()
function. This allows the system to generate a crash report with thread backtraces that show how you reached the unrecoverable error.
https://developer.apple.com/documentation/xcode/diagnosing_issues_using_crash_reports_and_device_logs/understanding_the_exception_types_in_a_crash_report