Pregunta iOS 10 no imprime NSLogs


Nada se imprime desde NSLog en Xcode 8.0 beta (8S128d). printf no 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

74
2018-06-17 16:49


origen


Respuestas:


Podría ser que haya agregado la propiedad "OS_ACTIVITY_MODE": "disable" en las variables de entorno del Esquema (para ocultar la salida del sistema operativo del simulador) y se olvidó de ello, y ahora se está ejecutando en un dispositivo real.

En Xcode 8:

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

Solo agregar OS_ACTIVITY_MODE y verifíquelo (No agregue un valor)

enter image description here

enter image description here

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 "disable" 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.


213
2017-09-15 05:19



Si revisas el Notas de la versión Xcode 8 beta, encontrarás 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 de la consola y ver los NSLogs. (26457535)


26
2018-06-17 18:36



el NSlog o print realmente se ejecuta, pero está oculto entre muchos otros resultados de depuración de la consola para resolver este problema Abre Xcode8:

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

agrega "OS_ACTIVITY_MODE" y configura el valor para "deshabilitar" y verifícalo.

click cerrar

xcode9

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

enter image description here enter image description here


9
2017-09-15 20:06



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, oculto la consola y me mostró solo la vista de variables. Esto lo hizo ver como NSLog() no funcionaba correctamente, mientras que de hecho funcionaba correctamente, simplemente no podía ver la salida.

enter image description here


6
2018-04-20 02:39



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

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


5
2018-06-23 01:17



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

Al desmarcar este valor en mi esquema, restauré mis registros.


5
2017-10-03 19:19



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


2
2017-09-23 06:01



Para cualquiera que se encuentre con esto en el futuro. El motivo por el que NSLog no se imprime en syslog en iOS 10 e iOS 11 se debe a que Apple está cambiando a Unified Logging.

Puedes ver la WWDC hablar aquí: https://developer.apple.com/videos/play/wwdc2016/721/

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

A partir de 10, debe utilizar 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 puede encontrar para una VM en /Users/USERNAME/Library/Developer/CoreSimulator/Devices/SIMULATOR-GUID/data/var/db/

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

Cambiar el nombre de esa carpeta foldername.xarchive.

Ábrelo en Console.app o utiliza la herramienta OSX log: log show <path to archive> --info --predicate <options>


0
2018-03-03 06:47