← Nesim Apps

Depurar un iPhone desde Windows por USB: capturas y registros con Python

Por Nesim Razon, desarrollador Android independiente · 2026-11-14

#Notas de desarrollo#iOS

En Android, adb facilita hacer una captura o leer un registro de un teléfono en tu mesa. No esperaba algo así para un iPhone en Windows, pero existe un camino: el paquete de controladores de Apple y una herramienta de Python de código abierto. Esta es la configuración que funcionó en un iPhone 7 con iOS 15.8, las trampas en el orden en que las encontré y un fallo real que resolví con ella.

Qué necesitas

El orden de instalación importa

Tras instalar Apple Devices, el iPhone seguía apareciendo en el Administrador de dispositivos con un estado de error, y la herramienta respondía que no podía conectar con el socket de usbmux. La solución fue abrir una vez la app Apple Devices con el teléfono conectado y desbloqueado, aceptar el aviso de confianza y dejar que terminara de instalar los controladores. Solo entonces el teléfono se listó bien.

La trampa de Python

En mi máquina el primer python de la ruta era un viejo Python 2.7, así que el comando pip a secas no instaló nada útil. En Windows el lanzador py elige el correcto: instala con py -3 -m pip install pymobiledevice3 y ejecuta siempre la herramienta como py -3 -m pymobiledevice3, porque el ejecutable que crea no está en la ruta.

Cuatro comandos que uso todo el rato

Leer el registro sin ahogarse

syslog live imprime todo lo que el teléfono registra, que es muchísimo. Filtrar por el nombre del proceso deja solo tu app. Aun así, mi app produjo más de un megabyte de registro en treinta segundos, así que escribo la salida en un archivo y busco después en lugar de verla pasar.

Tus propios mensajes son los más fáciles de encontrar. En Swift una llamada a NSLog aparece en este registro, así que etiqueto mis líneas con el nombre de la app y busco esa etiqueta.

Un ejemplo real: ¿por qué estaba vacío el banner?

Mi juego no mostraba el banner de anuncios después de cambiar de la unidad de anuncios de demostración de Google a la real. El teléfono no mostraba ningún error visible. Añadí un pequeño delegado a la vista del banner que escribe con NSLog el resultado de la petición de anuncio, compilé, instalé por TestFlight y leí el registro por USB.

La respuesta fue una sola línea: no hay anuncio que mostrar. Eso significa que el servidor de anuncios no tenía con qué rellenar, lo normal en una unidad de anuncios nueva de una app que aún no está en la tienda. Sin el registro habría seguido buscando un fallo en mi código.

Límites y privacidad

Una captura recoge lo que haya en pantalla y un registro sin filtrar contiene líneas de otras apps. Si el teléfono se comparte, como el mío con otro proyecto, primero lanzo solo mi app y filtro el registro por el nombre de su proceso. La herramienta funciona sobre la confianza que das al ordenador, así que acepta el aviso de confianza solo en equipos tuyos.

Preguntas frecuentes

¿Puedo hacer capturas de un iPhone en Windows?

Sí. Con el controlador Apple Devices y la herramienta pymobiledevice3 puedes montar una vez la imagen de disco de desarrollador y luego guardar capturas desde la línea de comandos.

¿Necesito un Mac o Xcode para esto?

No. El controlador viene de la app Apple Devices y la herramienta es un paquete de Python, así que basta un portátil con Windows.

¿Por qué la herramienta dice que no puede conectar con usbmux?

El controlador USB de Apple aún no estaba en marcha. Abre una vez la app Apple Devices con el teléfono conectado y de confianza y vuelve a intentarlo.

¿Cómo leo solo el registro de mi propia app?

Usa syslog live con la opción de nombre de proceso, escribe la salida en un archivo y busca tus mensajes etiquetados.

Más del blog