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.
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.
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.
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:
idevicesyslogpro streamování logů bez Xcode.
idevicesyslog -u <UDID>
- os_log v kódu: vlastní logy přes
os_log_taos_logAPI. Ú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
Zatím žádné komentáře.