ios xcode nslog xcode8 ios10

iOS 10 no imprime NSLogs



xcode xcode8 (9)

Nada imprime desde NSLog en Xcode 8.0 beta (8S128d). printf ha cambiado

Aquí está mi código:

NSLog(@"hello from NSLog"); printf("hello from printf");

Aquí está la salida en iOS 9 Simulator:

2016-06-17 09:49:10.887 calmapp-dev[28517:567025] hello from NSLog hello from printf

Aquí está la salida en iOS 10 Simulator:

hello from printf


Además, asegúrese de que la consola esté realmente visible en Xcode (es decir, asegúrese de que el icono del lado derecho esté resaltado en azul, como se muestra en la imagen a continuación). Después de actualizar Xcode, ocultó la consola y me mostró solo la vista Variables. Esto hizo que pareciera que NSLog() no funcionaba correctamente, mientras que de hecho funcionaba correctamente, simplemente no podía ver la salida.


Estoy usando Xcode 8, por lo que también encontré el mismo problema. Y resolví este problema agregando value = disable en el simulador, pero en una máquina real no agrego valor.


Hmmm ... parece que la propiedad "OS_ACTIVITY_MODE": "deshabilitar" IMPIDE que NSlog aparezca en el registro de Xcode 9.

Desmarcar este valor en mi esquema restauró mis registros.


Para cualquiera que se encuentre con esto en el futuro. La razón por la que NSLog no se imprime en syslog en iOS 10 e iOS 11 se debe a que Apple cambió a Registro unificado.

Puede ver la charla de WWDC sobre esto aquí: https://developer.apple.com/videos/play/wwdc2016/721/

Documentación aquí: https://developer.apple.com/documentation/os/logging

A partir del 10 deberías usar os_log en lugar de NSLog.

Cómo encontrar los registros en el disco: https://www.blackbagtech.com/blog/2017/09/22/accessing-unified-logs-image/

Para resumir, los registros se encuentran en /var/db/diagnostics que se pueden encontrar para una VM en /Users/USERNAME/Library/Developer/CoreSimulator/Devices/SIMULATOR-GUID/data/var/db/

Copie todos los elementos dentro de los diagnostics y uuidtext en una sola carpeta (no incluya los diagnósticos de las carpetas o uuidtext solo lo que está dentro).

Cambie el nombre de esa carpeta foldername.xarchive .

Ábralo en Console.app o use el log utilidades de OSX: log show <path to archive> --info --predicate <options>


Puede ser que haya agregado la propiedad "OS_ACTIVITY_MODE": "deshabilitar" en las variables de entorno de Scheme (para ocultar la salida del sistema operativo del simulador) y se haya olvidado, y ahora se está ejecutando en un dispositivo real.

En Xcode 8:

Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment Variables

Solo agregue OS_ACTIVITY_MODE y OS_ACTIVITY_MODE (No agregue un valor)

Resumen: Este es un error de Xcode 8 + iOS10, podemos resolverlo de esta manera:

  • Cuando use el simulador, agregue el Nombre "OS_ACTIVITY_MODE" y el Valor "deshabilitar" y verifíquelo.

  • Cuando esté en un dispositivo real, solo agregue "OS_ACTIVITY_MODE" y verifíquelo (No agregue el Valor). Verá el NSLog en la consola Xcode8.


Si revisa las notas de la versión beta de Xcode 8 , encontrará que dice:

Al depurar una aplicación que se ejecuta en Simulator, es posible que los registros no estén visibles en la consola. Solución alternativa: use el comando + / en Simulator.app para abrir el registro del sistema en la aplicación Consola para ver NSLogs. (26457535)


Tampoco puedo ver la salida NSLog en un dispositivo iOS 10 real. Si está utilizando dispositivos reales, puede abrir la ventana Dispositivos desde Xcode (Shift + Command + 2) y ver los registros de dispositivos allí, pero es difícil ver los registros de su aplicación porque la consola muestra registros del sistema y todas las aplicaciones.

(Estoy usando Xcode 7, por lo que puede que no sea un problema de Xcode sino un problema de iOS 10)


el NSlog o print en realidad se ejecuta pero está oculto entre muchas otras salidas de depuración de la consola para resolver este problema. Abra Xcode8:

Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment Variables

agregue "OS_ACTIVITY_MODE" y establezca el Valor en "deshabilitar" y verifíquelo.

haga clic en cerrar

xcode9

agregue "OS_ACTIVITY_MODE" y establezca el Valor en "predeterminado" y verifíquelo.


NSLog mensajes NSLog ya no se muestran cuando actualicé a Xcode 9.1 + iOS 11.1. Inicialmente, la respuesta aceptada me dio una manera de solucionar esto usando la aplicación Consola y habilitando el Simulador ( ver la respuesta de Lucas ).

En la aplicación Consola en Action , intenté seleccionar Include Debug Messages y anular la selección de Include Info Messages (para que la consola no esté inundada de mensajes del sistema). NSLog mensajes NSLog aparecieron en la ventana Consola en Xcode pero no en la aplicación Consola.

Me di cuenta de que tenía que haber una forma más directa de disable o habilitar (es decir, por default ) NSLogs gracias al comentario de Coeur en respuesta a esta respuesta. En mi opinión, es la mejor respuesta porque establecer OS_ACTIVITY_MODE en disable o default tendrá más sentido para los principiantes.