apple-crash-symbolication

Symbolicate .NET runtime backtraces from Apple .ips crash logs using atos and dSYM resolution.

1|Updated May 21, 2026
One-click install
npx skills add https://github.com/1k-off/umbraco-observability-playground --skill apple-crash-symbolication
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: apple-crash-symbolication
Source: https://github.com/1k-off/umbraco-observability-playground/tree/main/.agents/skills/apple-crash-symbolication
Command: npx skills add https://github.com/1k-off/umbraco-observability-playground --skill apple-crash-symbolication

SYSTEM DOCUMENTATION & REQUIREMENTS

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

What problem does it solve?

This Skill resolves raw native backtrace addresses from Apple .ips crash logs into .NET runtime function names with source file and line numbers, so you can quickly understand what failed in a .NET MAUI or Mono app.

Core Features & Use Cases

  • .ips crash parsing and validation: Confirms the input is iOS 15+/macOS 12+ .ips JSON (and stops early on unsupported formats like Android tombstones or legacy .crash text).
  • .NET runtime frame identification: Detects CoreCLR/Mono-related libraries (e.g., libcoreclr, libmonosgen-2.0, and relevant libSystem.Native components) from usedImages and computes absolute frame addresses.
  • UUID-matched dSYM symbolication (with automation): Locates matching dSYM artifacts (local builds, SDK packs, NuGet caches) and downloads missing symbols from the Microsoft symbol server, then runs atos to produce symbolicated backtraces.
  • Optional trace narrowing: Can focus symbolication on the crashing thread only and provides a ParseOnly mode when atos or symbols are unavailable.
  • Practical scenarios: Use it for triaging EXC_CRASH/EXC_BAD_ACCESS/SIGABRT/SIGSEGV originating in the .NET runtime, especially when you have an .ips file from a connected iOS device or want to confirm whether managed exception paths reached the runtime.

Quick Start

Use the skill to symbolicate the file MyApp-2026-02-25.ips by running the Symbolicate-Crash.ps1 script from this skill directory.

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 from an .ips file?

To symbolicate a .NET MAUI iOS crash log, parse the .ips JSON to extract thread frames, match library UUIDs to dSYM files, and run atos to resolve raw addresses into function names. This skill automates that workflow.

What is .ips crash symbolication for .NET apps?

.ips crash symbolication translates raw native backtrace addresses from Apple .ips JSON crash logs into readable .NET runtime function names with source file and line numbers for debugging MAUI or Mono applications.

Does this symbolication process work with Android crash logs?

No, this symbolication process does not work with Android crash logs. It strictly validates and processes Apple .ips JSON formats from iOS 15+/macOS 12+, rejecting unsupported formats like Android tombstones or legacy .crash text files.

How do I find the right dSYM files when .NET runtime frames are missing symbols?

To find missing dSYM files for .NET runtime frames, locate matching artifacts in local builds, SDK packs, or NuGet caches. This skill can automatically download missing symbols from the Microsoft symbol server using UUID matching.

What is the best way to debug EXC_BAD_ACCESS crashes in Mono runtime libraries?

The best way to debug EXC_BAD_ACCESS crashes in Mono runtime libraries is to symbolicate the .ips crash log by identifying CoreCLR or libmonosgen-2.0 frames and resolving their absolute addresses against UUID-matched dSYM files.

What are the limitations when atos is unavailable for iOS crash symbolication?

When atos is unavailable for iOS crash symbolication, you cannot produce full symbolicated backtraces. However, this skill provides a ParseOnly mode that still parses the .ips file and computes absolute frame addresses without requiring atos execution.