feat: add debug symbols workflow#756
Conversation
|
Size Report
Startup median (7 runs, lower is better):
Top changed chunks:
|
a25068d to
073d0cb
Compare
Code reviewVerdict: significant issues — the headline Findings
Verified cleanNo command injection ( OverallGood architecture — clean parse/match/symbolicate separation, bounded search, well-normalized errors. But the flagship Generated by Claude Code |
073d0cb to
59095db
Compare
|
Holding merge readiness on this until real Apple verification is done. Fixture-backed tests and command-construction coverage are useful, but for this workflow we need an actual simulator/device crash artifact plus matching dSYM exercised end-to-end with Please add validation evidence with the exact commands, simulator/device identity, crash artifact + dSYM provenance, output path, and proof the symbolicated artifact was produced. Until then I no longer consider #756 merge-ready. |
59095db to
e03d5c4
Compare
|
Updated validation note: the previous residual risk about no real simulator crash/dSYM evidence is stale. Real Apple verification was completed on branch codex/debug-symbols. Evidence:
Also aligned product scope: debug symbols is a crash triage lane, not a native debugger. Use logs for lead-up, debug symbols for post-crash artifact triage/dSYM UUID matching/first app frame, and Xcode/LLDB for live debugging. |
|
Updated #756 with the decided direction: When to use it:
Real simulator verification:
Verified command: node bin/agent-device.mjs debug symbols \
--artifact /Users/thymikee/Library/Logs/DiagnosticReports/CrashSymbolProbe-2026-06-11-131543.ips \
--dsym /private/tmp/agent-device-crash-probe/CrashSymbolProbe.app.dSYM \
--out /private/tmp/agent-device-crash-probe/CrashSymbolProbe-symbolicated-final.ipsExample compact report: Trimmed artifact proof: {
"frames": [
{ "symbol": "CrashSymbolProbeTrigger (in CrashSymbolProbe) (main.m:8)" },
{ "symbol": "__57-[AppDelegate application:didFinishLaunchingWithOptions:]_block_invoke (in CrashSymbolProbe) (main.m:22)" }
],
"agentDeviceSymbolication": {
"tool": "agent-device debug symbols",
"symbolicatedFrames": 3
}
}Raw crash bodies remain on disk and are not dumped into default output/agent context. |
e03d5c4 to
dc9faa0
Compare
Summary
Adds a narrow
agent-device debug symbolsworkflow for crash symbolication in the #694 native diagnostics rollout..ips,.crash, and log-style crash artifacts by matching UUIDs against local.dSYMbundles viadwarfdump --uuid, then runningatos.debugscoped to crash artifact triage. It does not compete withlogs,network,perf,record/trace, React DevTools, or Xcode/LLDB.--out; raw crash bodies are not dumped into default output or agent context.Refs #699
Parent context: #694
Touched files: 21.
Example Use Case
Use
debug symbolswhen an agent or developer already has an Apple crash artifact plus local dSYMs and needs to answer: "where did this crash land, and what app-owned frame should I inspect first?"This is better than pasting raw crash logs into agent context because it validates the dSYM UUID match, extracts the crashed thread and first symbolicated app frame, and keeps the full report on disk. It is not a replacement for native debugging: use
logsfor the lead-up/timeline and Xcode/LLDB for live state, breakpoints, variables, stepping, and root-cause debugging.Example compact report:
Validation
Real Apple simulator verification:
11D1F58A-5347-4DD5-8AD9-ED8948774DDF.CrashSymbolProbeandCrashSymbolProbe.app.dSYM.76C74FAC-C620-3472-951F-EBB0DC7833B5 (arm64)./Users/thymikee/Library/Logs/DiagnosticReports/CrashSymbolProbe-2026-06-11-131543.ips.Verified command:
Trimmed artifact proof:
{ "frames": [ { "symbol": "CrashSymbolProbeTrigger (in CrashSymbolProbe) (main.m:8)" }, { "symbol": "__57-[AppDelegate application:didFinishLaunchingWithOptions:]_block_invoke (in CrashSymbolProbe) (main.m:22)" } ], "agentDeviceSymbolication": { "tool": "agent-device debug symbols", "symbolicatedFrames": 3 } }Automated validation:
pnpm exec vitest run src/__tests__/debug-symbols.test.ts src/__tests__/cli-debug-symbols.test.ts src/utils/__tests__/args.test.tspnpm check:fallow --base origin/mainpnpm check:quickpnpm check:unitpnpm formatpnpm buildgit diff --checkSupport matrix:
.ips,.crash, and Binary Images log-style artifacts: supported with matching.dSYM.mapping.txt: deferred; use retrace externally.ndk-stack/addr2line: deferred; use Android NDK tooling externally.