Zpět na domů

Sběr logů iOS: 7 způsobů pro ladění

Článek popisuje 7 metod sběru logů iOS: .ips přes sysdiagnose, log collect CLI, Console. Příklady havárií EXC_BAD_ACCESS, JetsamEvent, síťové chyby. Pro analýzu výkonu a chyb bez Xcode.

7 metod logů iOS: sysdiagnose a CLI
Advertisement 728x90

Ladění iOS aplikací: 7 metod sběru systémových logů

iOS logy zachycují vnitřní události aplikace: síťové požadavky, chyby, zasekávání UI a havárie. Umožňují identifikovat problémy bez vizuálních indikátorů. Mezi příklady patří EXC_BAD_ACCESS v Pokemon GO, I/O na hlavním vlákně v Console a timeouty CFNetwork v log collect.

Logy se dělí na zprávy o haváriích (EXC_BAD_ACCESS, SIGSEGV) a diagnostické (výkon, síť, paměť). Testeri je používají k ověření volání funkcí, analýze interakcí se servery a odhalení skrytých chyb.

.ips soubory přes sysdiagnose

Automaticky generované zprávy jsou dostupné v Nastavení → Soukromí a zabezpečení → Analytika a vylepšení → Data analytiky. Formát: type_events_data_time.ips, např. AtiClient-2024-08-14-152242.ips.

Google AdInline article slot

Typy zpráv:

  • CrashReport: výjimky a signály (podle bundle ID, např. VKClient).
  • JetsamEvent: vyhození kvůli nedostatku RAM (úniky paměti).
  • Watchdog: timeouty spuštění nebo zasekávání.
  • SpinReport: vysoká zátěž CPU bez odezvy (deadlocky).
  • NotificationServiceExtension: selhání push notifikací.

Ruční generování: současné stisknutí tlačítek hlasitosti + boční (1–1,5 s), soubor stacks.

Export přes AirDrop. Soubory se automaticky mažou – sbírejte ihned.

Google AdInline article slot

Použití: selhání bez Xcode, analýza paměti/sítě.

log collect CLI: příkazový řádek pro archivy

Vyžaduje Xcode Command Line Tools, připojení přes USB, Terminal. Získává UDID přes libimobiledevice.

Sbírá logy za období až 10 dní (vs sysdiagnose – snímek v okamžiku). Rychlejší, automatizovatelné, řízená velikost.

Google AdInline article slot

Základní příkaz:

sudo log collect --device-udid <UDID> --last 10m --output iphone_logs.logarchive

Klíčové parametry:

  • --output ~/Desktop/iphone_logs.logarchive — cesta k uložení.
  • --last 30m / 2h / 1d — období.
  • --start "2025-08-20" --end "2025-08-20 14:30:00" — data.
  • --size 100m — limit velikosti.
  • --device-udid A1B2C3D4R5F8G8H8I1J0 — podle UDID (preferováno).

Analýza:

log show --archive system_logs.logarchive --predicate 'process == "AtiClient" AND messageType == "error"'

Filtry: proces, chyby, období.

Srovnání s sysdiagnose:

| Parametr | log collect | sysdiagnose |

|----------|-------------|-------------|

| Čas | až 10 dní | den generování |

| Automatizace | CLI | ruční |

| Velikost | řízená | velká |

| Rychlost | rychlá | 10–15 min |

Použití: nestabilní chyby, trendy výkonu, kontext havárií.

Console: live monitorování

Xcode → Okno → Zařízení a simulátory → Otevřít Console. Filtry podle procesu (např. AtiClient). Zobrazuje v reálném čase: Hang Risk na hlavním vlákně, libRPAC.dylib selhání.

Příklad logu:

Hang Risk com.apple.runtime-issues
message: This method does I/O on the main thread...
libRPAC.dylib sboy 19:12:18.350727+0300 AtiClient

Export do .logarchive pro offline analýzu.

Metody 4–7: pokročilý sběr

  • Xcode Devices and Simulators: logy podle UDID, filtry podle podsystému (CFNetwork, Jetsam).
  • libimobiledevice: idevicesyslog pro streamování logů bez Xcode.
idevicesyslog -u <UDID>
  • os_log v kódu: vlastní logy přes os_log_t a os_log API. Úrovně: debug, info, error.
  • Instruments: profilování s logy (Time Profiler, Leaks).

Co je důležité

  • .ips pro okamžité selhání (CrashReport, Jetsam).
  • log collect pro dlouhodobé trendy (až 10 dní, CLI).
  • Console pro live ladění I/O na hlavním vlákně.
  • UDID je nutné pro přesné cílení zařízení.
  • Kombinujte metody: sysdiagnose + log show pro úplnou analýzu.

— Editorial Team

Advertisement 728x90

Číst dál