apple-crash-symbolication

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

Updated Jul 12, 2026
One-click install
npx skills add https://github.com/Patrick-Rex/DotNetTechSamples --skill apple-crash-symbolication-patrick-rex
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: apple-crash-symbolication
Source: https://github.com/Patrick-Rex/DotNetTechSamples/tree/main/.agents/plugins/dotnet-diag/skills/apple-crash-symbolication
Command: npx skills add https://github.com/Patrick-Rex/DotNetTechSamples --skill apple-crash-symbolication-patrick-rex

SYSTEM DOCUMENTATION & REQUIREMENTS

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

What problem does it solve? Native backtraces in Apple platform crash logs from .NET MAUI or Mono apps show raw addresses for libcoreclr and libmonosgen frames, making it impossible to identify which .NET runtime function crashed without manual UUID matching and symbol lookup. ## Core Features & Use Cases - Automated .ips Parsing: Parses the two-part JSON .ips format, extracts Mach-O UUIDs, load addresses, and frame offsets from usedImages and thread backtraces. - dSYM Discovery and Download: Locates UUID-matched dSYMs from build output, SDK packs, and NuGet cache, and automatically downloads .dwarf symbols from the Microsoft symbol server. - Batch Symbolication with atos: Resolves frame addresses to function names, source files, and line numbers, stripping CI path prefixes to map to dotnet runtime sources. - Use Case: A .NET MAUI app crashes on a user's iPhone with EXC_BAD_ACCESS in libcoreclr. Pull the .ips log with idevicecrashreport, run the script, and get a symbolicated backtrace pointing to the exact runtime function and source line. ## Quick Start Symbolicate the .NET frames in my iOS crash log MyApp-2026-02-25.ips and show me the faulting thread backtrace.

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 a .NET MAUI iOS crash log?

Parse the .ips file to extract Mach-O UUIDs and frame addresses from usedImages, 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 download.

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

Use idevicecrashreport from libimobiledevice to pull .ips files from a connected device, or open Xcode's Devices and Simulators window and view device logs. Mac Catalyst logs appear in ~/Library/Logs/CrashReporter/ and macOS logs in ~/Library/Logs/DiagnosticReports/.

Does atos work without dSYM files for .NET crash logs?

No, atos requires a UUID-matched dSYM or DWARF binary to resolve addresses. If no local dSYM exists, the script downloads .dwarf symbols from the Microsoft symbol server using the Mach-O UUID and converts them into a .dSYM bundle automatically.

Can I symbolicate Android tombstone files with this workflow?

No, this workflow only supports the Apple .ips JSON format from iOS 15+ and macOS 12+. Android tombstones with #NN pc frame lines and legacy .crash text files are explicitly rejected, and the script exits with a format error.

Why does atos return raw addresses instead of function names?

atos returns unresolved addresses when the dSYM UUID does not match the crash log's image UUID, or when the -o path does not point to the DWARF binary inside Contents/Resources/DWARF/. Verify the match with dwarfdump --uuid before symbolicating.