No se imprime nada desde NSLog
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á el resultado en el simulador de iOS 10:
hello from printf
Respuestas:
Podría ser que agregó la propiedad "OS_ACTIVITY_MODE": "disable" en las variables de entorno de Scheme (para ocultar la salida del sistema operativo del simulador) y se olvidó de ella, y ahora se está ejecutando en un dispositivo real.
En Xcode 8:
Solo agregue
OS_ACTIVITY_MODE
y verifique (No agregue un valor)Resumen: Este es un error de Xcode 8 + iOS10, lo podemos solucionar de esta manera:
Cuando utilice el simulador, agregue el Nombre "OS_ACTIVITY_MODE" y el Valor "deshabilitar" y márquelo.
Cuando esté en un dispositivo real, solo agregue "OS_ACTIVITY_MODE" y márquelo (No agregue el valor Value. Verá el NSLog en la consola Xcode8.
fuente
disable
condefault
.Si consulta las notas de la versión beta de Xcode 8 , encontrará que dice:
fuente
NSlog o print realmente se ejecuta pero está oculto entre muchas otras salidas de depuración de la consola para resolver este problema Abra Xcode8:
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 márquelo.
fuente
disable
condefault
.Tampoco puedo ver la salida NSLog en un dispositivo iOS 10 real. Si está utilizando dispositivos reales, puede abrir la ventana Dispositivos desde Xcode (Mayús + Comando + 2) y ver los registros del dispositivo allí, pero es difícil ver los registros de su aplicación porque la consola muestra los 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)
fuente
os_log
.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 de abajo). 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 el resultado.fuente
Shift + ⌘ + C
Xcode versión 8.3.3Hmmm ... parece que la propiedad "OS_ACTIVITY_MODE": "deshabilitar" EVITA que NSlog aparezca en el registro de Xcode 9.
Al desmarcar este valor en mi esquema, se restauraron mis registros.
fuente
Para cualquiera que se encuentre con esto en el futuro. La razón por la que NSLog no imprime en syslog en iOS 10 e iOS 11 se debe a que Apple cambió a Unified Logging.
Puedes ver la WWDC hablar 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ía 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/
En resumen, los registros se encuentran en los
/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
diagnostics
yuuidtext
en una sola carpeta (no incluya los diagnósticos de carpetas o uuidtext solo lo que está adentro).Cambie el nombre de esa carpeta
foldername.xarchive
.Ábralo en Console.app o use la utilidad OSX
log
:log show <path to archive> --info --predicate <options>
fuente
Estoy usando Xcode 8, así que también encontré el mismo problema. Y resolví este problema agregando
value = disable
el simulador, pero en una máquina real no agrego valor.fuente
disable
condefault
.OS_ACTIVITY_MODE
condisable
odefault
es directoNSLog
los mensajes 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 ( vea la respuesta de Lucas ).En la aplicación de la Consola
Action
, intenté seleccionarInclude Debug Messages
y anular la selecciónInclude Info Messages
(para que la Consola no esté inundada de mensajes del sistema).NSLog
Los mensajes aparecieron en la ventana de la consola en Xcode pero no en la aplicación de la consola.Me di cuenta de que tenía que haber una forma más directa de
disable
habilitar o habilitar (es decirdefault
)NSLogs
gracias al comentario de Coeur en respuesta a esta respuesta. En mi opinión, es la mejor respuesta porque el establecimientoOS_ACTIVITY_MODE
dedisable
odefault
tendrá más sentido para los principiantes.fuente