Skip to content
Reliable, open-source crash reporting for iOS and Mac OS X
Objective-C C Assembly C++ Objective-C++ Makefile Other
Branch: master
Clone or download
MatkovIvan Merge pull request #43 from microsoft/fix/nonptr-isa
Apply bit mask for non-pointer isa values on macOS x64
Latest commit 7ac89f0 Jan 10, 2020
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
CrashReporter.xcodeproj Add protobuf output Dec 25, 2019
Dependencies Remove extra gitignore Oct 14, 2019
Documentation/Crash Log Format Rename to 'Crash Log Format' Dec 16, 2008
Other Sources Do not crash on null values Oct 14, 2019
Resources use generated protobufer Oct 11, 2019
Source Merge branch 'master' into fix/nonptr-isa Jan 10, 2020
Tools/CrashViewer Merge branch '1.2-with-master' into prepre-for-merge Oct 18, 2019
.gitignore Fix docs generation Oct 16, 2019
.gitmodules protobuf-c as submodule Oct 11, 2019
CHANGELOG.md Update changelog Dec 27, 2019
Doxyfile Fix docs generation Oct 16, 2019
LICENSE Update the LICENSE copyrights for 2014. Feb 12, 2014
README.md
ThirdPartyNotices.txt Remove "Catch" from 3rd party notices Oct 18, 2019

README.md

PLCrashReporter

Reliable, open-source crash reporting for iOS, Mac OS X and tvOS.

The easiest way to use PLCrashReporter is by using AppCenter. However, if you want to use PLCrashReporter directly, grab the latest release at https://github.com/Microsoft/PLCrashReporter/releases and check out the official PLCrashReporter documentation.

Features

  • Uses only supported and public APIs/ABIs for crash reporting.
  • The most accurate stack unwinding available, using DWARF and Apple Compact Unwind frame data.
  • First released in 2008, and used in hundreds of thousands of apps. PLCrashReporter has seen a tremendous amount of user testing.
  • Does not interfere with debugging in lldb/gdb
  • Easy to integrate with existing or custom crash reporting services.
  • Backtraces for all active threads are provided.
  • Provides full register state for the crashed thread.

Prerequisites

  • Xcode 10 or above.
  • Minimum supported platforms: iOS 8, macOS 10.7, tvOS 9.

Decoding Crash Reports

Crash reports are output as protobuf-encoded messages, and may be decoded using the CrashReporter library or any Google Protobuf decoder.

In addition to the in-library decoding support, you may use the included plcrashutil binary to convert crash reports to apple's standard iPhone text format. This may be passed to the symbolicate tool.

./bin/plcrashutil convert --format=iphone example_report.plcrash | symbolicatecrash Future library releases may include built-in re-usable formatters, for outputting alternative formats directly from the phone.

Building

Prerequisites

To build

  • Open a new window for your Terminal.

  • Go to PLCrashReporter's root folder and run

    xcodebuild BITCODE_GENERATION_MODE=bitcode OTHER_CFLAGS="-fembed-bitcode" -configuration Release -target 'Disk Image'

    to create binaries for all platforms.

  • Verify that your iOS and tvOS binaries have Bitcode enabled by running otool -l build/Release-appletv/CrashReporter.framework/Versions/A/CrashReporter | grep __LLVM (adjust the path to the binary as necessary). If you see some output, it means the binary is Bitcode enabled.

Contributing

We are looking forward to your contributions via pull requests.

To contribute to PLCrashReporter, you need the tools mentioned above to build PLCrashReporter for all architectures.

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Checking out the repository

PLCrashReporter has a dependency on Protocol Buffers implementation in C as a git submodule. Use below command to clone PLCrashReporter repository or update the repository if you have already cloned it.

git clone --recursive https://github.com/microsoft/plcrashreporter.git
git submodule update --init --recursive
You can’t perform that action at this time.