PLCrashUtilLib 1.1.3

dotnet add package PLCrashUtilLib --version 1.1.3
                    
NuGet\Install-Package PLCrashUtilLib -Version 1.1.3
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PLCrashUtilLib" Version="1.1.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PLCrashUtilLib" Version="1.1.3" />
                    
Directory.Packages.props
<PackageReference Include="PLCrashUtilLib" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add PLCrashUtilLib --version 1.1.3
                    
#r "nuget: PLCrashUtilLib, 1.1.3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package PLCrashUtilLib@1.1.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=PLCrashUtilLib&version=1.1.3
                    
Install as a Cake Addin
#tool nuget:?package=PLCrashUtilLib&version=1.1.3
                    
Install as a Cake Tool

PLCrashUtil - .NET Library and CLI Tool

A comprehensive .NET library and command-line utility for parsing and converting PLCrash reports to iOS-compatible crash logs. Based on the original PLCrashReporter project, this C# implementation provides both programmatic API access via PLCrashUtilLib and a convenient CLI tool via PLCrashUtil.

Packages

Package Version Description
PLCrashUtilLib 1.1.3 Class library for programmatic integration
PLCrashUtil 1.1.3 Global CLI tool for command-line usage

Features

  • ✅ Parse PLCrashReporter protobuf format files
  • ✅ Convert to iOS-compatible text crash logs
  • ✅ Access structured crash data programmatically
  • ✅ Support for all PLCrash report versions
  • ✅ Available as both .NET library and global CLI tool
  • ✅ Cross-platform (.NET 6.0+)

Installation

CLI Tool

Install the global CLI tool:

dotnet tool install --global PLCrashUtil

Library

Add the library to your .NET project:

dotnet add package PLCrashUtilLib

Or via PackageManager:

<PackageReference Include="PLCrashUtilLib" Version="1.1.3" />

CLI Usage

Once installed as a global tool, use the plcrashutil command:

# Convert a PLCrash report to iOS format
plcrashutil convert --format=ios crash_report.plcrash

# Convert and save to file
plcrashutil convert --format=ios crash_report.plcrash > formatted_crash.txt

CLI Options

  • --format=ios or --format=iphone - Output iOS-compatible crash log format

Library Usage

Basic Example

using PLCrashUtilLib.Models;

// Load and parse a crash report
byte[] crashData = File.ReadAllBytes("crash_report.plcrash");
var crashReport = new PLCrashReport(crashData);

// Access structured data
Console.WriteLine($"App: {crashReport.ApplicationInfo.ApplicationIdentifier}");
Console.WriteLine($"Version: {crashReport.ApplicationInfo.ApplicationVersion}");
Console.WriteLine($"Crashed Thread: {crashReport.Threads.First(t => t.Crashed).ThreadNumber}");

// Convert to formatted text
string formattedReport = PLCrashReportTextFormatter.StringValueForCrashReport(
    crashReport, 
    PLCrashReportTextFormat.PLCrashReportTextFormatiOS
);
Console.WriteLine(formattedReport);

Building from Source

Requirements

  • .NET 6.0 SDK or later
  • Protocol Buffers compiler (protoc) - only needed if regenerating protobuf files

Build Steps

# Clone the repository
git clone https://github.com/BugSplatGit/plcrashutil-dotnet.git
cd plcrashutil-dotnet

# Build all projects
dotnet build

# Run unit tests
dotnet test

# Create NuGet packages
dotnet pack PLCrashUtilLib/PLCrashUtilLib.csproj --configuration Release
dotnet pack PLCrashUtil/PLCrashUtil.csproj --configuration Release

Project Structure

  • PLCrashUtilLib/ - Core library with crash report parsing logic
  • PLCrashUtil/ - CLI tool that uses the library
  • PLCrashUtilLib.Tests/ - Unit tests for the library

Regenerating Protobuf Files

If you need to update the protobuf definitions:

protoc --csharp_out=. PLCrashReport.proto

Testing

Unit Tests

The library includes comprehensive unit tests:

# Run all tests
dotnet test

# Run with detailed output
dotnet test --verbosity normal

# Run tests for specific project
dotnet test PLCrashUtilLib.Tests/

Manual Testing

Test the CLI tool with the included sample files:

# CLI tool (if installed globally)
plcrashutil convert --format=ios fuzz_report.plcrash

# From source
dotnet run --project PLCrashUtil -- convert --format=ios fuzz_report.plcrash

Compatibility

  • Platforms: Windows, macOS, Linux (any platform supporting .NET 6.0+)
  • PLCrash Versions: All versions supported by PLCrashReporter
  • .NET Versions: .NET 6.0 and later

Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Based on the original PLCrashReporter project by Plausible Labs Cooperative, Inc.

Copyright (c) BugSplat LLC.

Third-Party Dependencies

See ThirdPartyNotices.txt for information about third-party dependencies.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.3 150 7/8/2025
1.1.2 137 7/8/2025
1.1.1 147 7/8/2025
1.1.0 144 7/2/2025

Fixed binary image formatting and UUID output to match Apple plcrashreporter conventions.