apple-crash-symbolication

Symbolicates .NET runtime frames in Apple platform .ips crash logs using dSYMs and atos.

1|Updated Jun 1, 2026
One-click install
npx skills add https://github.com/D1ssolve/craft-agents --skill apple-crash-symbolication-d1ssolve
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: apple-crash-symbolication
Source: https://github.com/D1ssolve/craft-agents/tree/main/skills/apple-crash-symbolication
Command: npx skills add https://github.com/D1ssolve/craft-agents --skill apple-crash-symbolication-d1ssolve

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve? Crash logs from .NET MAUI and Mono apps on iOS, tvOS, Mac Catalyst, and macOS contain raw hexadecimal addresses for native backtrace frames, making it impossible to identify which .NET runtime functions caused the crash without manual symbol resolution. ## Core Features & Use Cases - .ips Crash Log Parsing: Parses the two-part JSON .ips format, extracts UUIDs, load addresses, and frame addresses from usedImages and thread backtraces, and interprets exception data like EXC_CRASH, SIGABRT, and managed exception messages in the asi field. - Automatic Symbol Resolution: Locates UUID-matched dSYM bundles from build outputs, SDK packs, or the NuGet cache, and automatically downloads .dwarf symbols from the Microsoft symbol server using Mach-O UUIDs. - Batch Symbolication with atos: Resolves libcoreclr and libmonosgen-2.0 frames to function names, source files, and line numbers via atos, with an automation script (Symbolicate-Crash.ps1) handling the full workflow. - Use Case: A .NET MAUI app crashes on a user's iPhone with EXC_BAD_ACCESS. Pull the .ips file with idevicecrashreport, run the script, and get a symbolicated backtrace pointing to the exact .NET runtime source lines. ## Quick Start Ask the AI to symbolicate the .NET frames in your .ips crash log file, for example: "Symbolicate the .NET runtime frames in MyApp-2026-02-25.ips and tell me what caused the crash."

Frequently Asked Questions about apple-crash-symbolication

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I symbolicate .NET frames in an iOS crash log?

Parse the .ips file to extract frame addresses and image UUIDs, locate a UUID-matched dSYM for libcoreclr or libmonosgen-2.0, then run atos with the load address and frame addresses. The Symbolicate-Crash.ps1 script automates this entire workflow including symbol downloads.

How to get crash logs from an iPhone for a .NET MAUI app?

Use idevicecrashreport from libimobiledevice to pull crash logs from a connected iOS device, then filter for your app's .ips files. Alternatively, use Xcode's Devices and Simulators window to view device logs.

Does this work with Android tombstone crash files?

No, this workflow only supports Apple .ips JSON crash logs from iOS, tvOS, Mac Catalyst, and macOS. Android tombstones with #NN pc frame lines are a different format and the skill explicitly stops when it detects them.

Where can I download .NET runtime dSYM symbols for iOS crashes?

Symbols are automatically downloaded from the Microsoft symbol server using the Mach-O UUID from the crash log. You can also find dSYMs in build output directories, .NET SDK packs, the NuGet cache, or via the dotnet-symbol tool.

Why does atos fail to resolve my crash log addresses?

atos fails when the dSYM UUID does not match the crash log's image UUID, or when the load address is incorrect. Verify the match with dwarfdump --uuid and use the base address from usedImages in the .ips file.

Can I symbolicate NativeAOT app crashes on Apple platforms?

Yes, but the runtime is statically linked into the app binary, so you need the app binary's own dSYM from the build output. The libSystem.* BCL native libraries remain separate and are symbolicated individually.