Get desktop application:
View/edit binary Protocol Buffers messages
Legacy processor architecture type codes. These codes have been deprecated.
Used in:
x86
x86-64
ARMv6
PPC
* PPC64
ARMv7
Unknown processor type.
A crash report
Host system data
All backtraces
All loaded binary images
The exception that triggered the crash (if any)
The signal that triggered the crash
The process info. Required for all v1.1+ crash reports.
Host architecture information. Required for all v1.1+ crash reports. If unavailable, the information should be derived from the deprecated SystemInfo.architecture field.
Report format information. Required for all v1.1+ crash reports.
Custom data. Can be used by user to store contextual information for the crash.
Application info
Used in:
Unique application identifier
Application version string
Application marketing version string
Binary image
Used in:
Image base address
Segment size
Name of the binary image (should be a full path name)
128-bit object UUID (matches Mach-O DWARF dSYM files)
The image's code type. Should be included in all v1.1+ crash reports. The code type may differ between binaries in the case of architectures with forwards-compatible code types, such as ARM, where armv6 and armv7 images may be mixed.
Exception
Used in:
The exception name that triggered this crash
The exception reason
The exception's original call stack, if available. This may be preserved across rethrow of an exception, and can be used to determine the original call stack.
Host architecture information.
Used in:
Hardware model (eg, MacBookPro6,1)
The host processor.
The number of actual physical processor cores. Note that the number of active processors may be managed by the operating system's power management system, and this value may not reflect the number of active processors at the time of the crash.
The number of logical processors. Note that the number of active processors may be managed by the operating system's power management system, and this value may not reflect the number of active processors at the time of the crash.
Process Data. This was not available in earlier releases of the crash reporter and is marked optional for compatibility.
Used in:
Application process name
Application process ID
Application process path
Application parent process name
Application parent process ID
* If false, the process is being run via process-level CPU emulation (such as Rosetta).
* The start time of the process (as seconds since UNIX epoch). The field may be ommitted if the start time can not be determined.
Processor information
Used in:
,* The CPU type encoding that should be used to interpret cpu_type and cpu_subtype. This value is required.
* The CPU type.
* The CPU subtype.
CPU Type Encodings The wire format maintains support for multiple CPU type encodings; it is expected that different operating systems may target different processors, and the reported CPU type and subtype information may not be easily or directly expressed when not using the vendor's own defined types. Currently, only Apple Mach CPU type/subtype information is supported by the wire protocol. These types are stable, intended to be encoded in Mach-O files, and are defined in mach/machine.h on Mac OS X. Implementations must gracefully handle the addition of unknown type encodings.
Used in:
Unknown processor type encoding.
Apple Mach-defined processor types.
Report format information
Used in:
* If true, this report was generated on request, and no crash occured.
* A client-generated 16 byte OSF standard UUID for this report. May be used to filter duplicate reports submitted by a single client.
Signal Information
Used in:
* Signal name
Signal code
Faulting instruction or address
The Mach Exception that triggered the crash. This field will only be included in the case that encoding crash reporter's exception-based reporting was enabled, and a Mach exception was caught. If the mach_exception field is defined, the legacy signal info will also be provided; this is required to maintain backwards compatibility with existing report handlers. Note, however, that the signal info may be derived from the Mach exception info by the encoding crash reporter, and thus may not exactly match the kernel exception-to-signal mappings implemented in xnu. As such, when Mach exception data is available, its use should be preferred.
Mach exception info.
Used in:
The exception type. These values will generally be common across most Apple platforms.
The exception codes. Interpretation of these values depends on the exception type, and/or the faulting platform.
A symbol table entry.
Used in:
The symbol name
The symbol start address
The symbol end address, if explicitly defined. This will only be included if the end address is explicitly defined (eg, by DWARF debugging information), will not be derived by best-guess heuristics.
Used in:
Operating system
OS version
Processor architecture (deprecated in favor of machine_info)
Date crash report was generated (as seconds since epoch). 0 if the time is unknown or can not be determined.
OS build number (eg, 10J869)
Known operating system types
Used in:
Mac OS X
iPhone OS
iPhone Simulator (Mac OS X w/ simulator runtime environment)
Apple tvOS
Unknown operating system.
Thread state
Used in:
Thread number (indexed at 0, must be unique within a crash report)
Backtrace stack frames
True if this is the crashed thread
Thread registers (required if this is the crashed thread, optional otherwise). Note that if an error occurs during crash report generation, the register values may be missing for the crashed thread.
A single register value
Used in:
Register name (r1, ebp, ...)
Register value (32-bit or 64-bit)
Stack frame
Used in:
,Instruction pointer
Optional symbol information for this frame's PC. If computed client-side, this value is a best guess, and may be inaccurate. Symbol information may not be available, in which case this field will be excluded from the report. This method of encoding symbol records is unfortunately ineffecient, as it is possible that the same symbol will be included multiple times in a single crash report. Unfortunately, insofar as the crash reporter must remain async-safe, there is no reasonable way to perform symbol uniquing at the time the report is written. A future version of this format may resolve this issue, and migrate to the use of an index into a shared symbol table.