## Depuración de apps iOS: 7 métodos para recopilar registros del sistema
Los registros de iOS capturan eventos internos de la app: solicitudes de red, errores, congelamientos de la interfaz de usuario y cuelgues. Ayudan a identificar problemas sin indicios visuales. Ejemplos incluyen EXC_BAD_ACCESS en Pokemon GO, E/S en el hilo principal en Console, y tiempos de espera de CFNetwork en log collect.
Los registros se dividen en informes de cuelgues (EXC_BAD_ACCESS, SIGSEGV) y diagnósticos (rendimiento, red, memoria). Los probadores los usan para verificar llamadas a funciones, analizar interacciones con el servidor y descubrir errores ocultos.
Archivos .ips mediante sysdiagnose
Los informes generados automáticamente están disponibles en Ajustes → Privacidad y seguridad → Análisis y mejoras → Datos analíticos. Formato: event_type_date_time.ips, por ejemplo AtiClient-2024-08-14-152242.ips.
Tipos de informes:
- CrashReport: excepciones y señales (por bundle ID, p. ej., VKClient).
- JetsamEvent: descarga por falta de RAM (fugas de memoria).
- Watchdog: tiempos de espera al lanzar o cuelgues.
- SpinReport: uso elevado de CPU sin respuesta (bloqueos mutuos).
- NotificationServiceExtension: fallos en notificaciones push.
Generación manual: presiona simultáneamente los botones de volumen + botón lateral (1–1.5 s), archivo stacks.
Exporta mediante AirDrop. Los archivos se eliminan automáticamente: recógelos de inmediato.
Casos de uso: fallos sin Xcode, análisis de memoria/red.
log collect CLI: Herramienta de línea de comandos para archivos
Requiere Xcode Command Line Tools, conexión USB, Terminal. Obtiene UDID mediante libimobiledevice.
Recopila registros hasta 10 días (frente a sysdiagnose: instantánea del momento). Más rápido, automatizable, tamaño controlable.
Comando básico:
sudo log collect --device-udid <UDID> --last 10m --output iphone_logs.logarchive
Parámetros clave:
--output ~/Desktop/iphone_logs.logarchive— ruta de guardado.--last 30m / 2h / 1d— período de tiempo.--start "2025-08-20" --end "2025-08-20 14:30:00"— fechas.--size 100m— límite de tamaño.--device-udid A1B2C3D4R5F8G8H8I1J0— por UDID (preferido).
Análisis:
log show --archive system_logs.logarchive --predicate 'process == "AtiClient" AND messageType == "error"'
Filtros: proceso, errores, período de tiempo.
Comparación con sysdiagnose:
| Parámetro | log collect | sysdiagnose |
|--------------|-------------|-------------|
| Tiempo | hasta 10 días | día de generación |
| Automatización | CLI | manual |
| Tamaño | controlable | grande |
| Velocidad | rápido | 10–15 min |
Casos de uso: errores inestables, tendencias de rendimiento, contexto de cuelgues.
Console: Monitoreo en vivo
Xcode → Ventana → Dispositivos y simuladores → Abrir Console. Filtros por proceso (p. ej., AtiClient). Muestra en tiempo real: Hang Risk en hilo principal, fallos de libRPAC.dylib.
Ejemplo de registro:
Hang Risk com.apple.runtime-issues
message: This method does I/O on the main thread...
libRPAC.dylib failure 19:12:18.350727+0300 AtiClient
Exporta a .logarchive para análisis sin conexión.
Métodos 4–7: Recopilación avanzada
- Xcode Devices and Simulators: registros por UDID, filtros por subsistema (CFNetwork, Jetsam).
- libimobiledevice:
idevicesyslogpara transmitir registros sin Xcode.
idevicesyslog -u <UDID>
- os_log en el código: registros personalizados mediante
os_log_ty APIos_log. Niveles: debug, info, error.
- Instruments: perfilado con registros (Time Profiler, Leaks).
Puntos clave
- .ips para fallos instantáneos (CrashReport, Jetsam).
- log collect para tendencias a largo plazo (hasta 10 días, CLI).
- Console para depuración en vivo de E/S en hilo principal.
- UDID necesario para dirigirse al dispositivo preciso.
- Combina métodos: sysdiagnose + log show para análisis completo.
— Editorial Team
Aún no hay comentarios.