Rien ne s'imprime à partir NSLog
de Xcode 8.0 beta (8S128d). printf
est inchangé
Voici mon code:
NSLog(@"hello from NSLog");
printf("hello from printf");
Voici la sortie sur le simulateur iOS 9:
2016-06-17 09:49:10.887 calmapp-dev[28517:567025] hello from NSLog
hello from printf
Voici la sortie sur iOS 10 Simulator:
hello from printf
Réponses:
Il se peut que vous ayez ajouté la propriété "OS_ACTIVITY_MODE": "disable" dans les variables d'environnement Scheme (pour masquer la sortie du système d'exploitation du simulateur) et que vous l'ayez oublié, et que vous l'utilisez maintenant sur un appareil réel.
Dans Xcode 8:
Ajoutez
OS_ACTIVITY_MODE
et vérifiez seulement (N'ajoutez pas de valeur)Résumé: Il s'agit d'un bogue de Xcode 8 + iOS10, nous pouvons le résoudre de cette manière:
Lors de l'utilisation du simulateur, ajoutez le nom "OS_ACTIVITY_MODE" et la valeur "disable" et vérifiez-le.
Sur un appareil réel, ajoutez uniquement "OS_ACTIVITY_MODE" et cochez-le (N'ajoutez pas la valeur). Vous verrez le NSLog dans la console Xcode8.
la source
disable
pardefault
.Si vous consultez les notes de version bêta de Xcode 8 , vous constaterez qu'il est dit:
la source
le NSlog ou l'impression est réellement exécuté mais est caché parmi de nombreuses autres sorties de débogage de la console pour résoudre ce problème Ouvrez Xcode8:
ajoutez "OS_ACTIVITY_MODE" et définissez la valeur sur "désactiver" et vérifiez-la.
cliquez sur fermer
xcode9
ajoutez "OS_ACTIVITY_MODE" et définissez la valeur sur "default" et vérifiez-la.
la source
disable
pardefault
.Je ne peux pas non plus voir la sortie NSLog dans le vrai appareil iOS 10. Si vous utilisez de vrais appareils, vous pouvez ouvrir la fenêtre Appareils à partir de Xcode (Maj + Commande + 2) et y voir les journaux de l'appareil, mais il est difficile de consulter les journaux de votre application car la console affiche les journaux du système et de toutes les applications.
(J'utilise Xcode 7, donc ce n'est peut-être pas le problème de Xcode mais le problème d'iOS 10)
la source
os_log
.Assurez-vous également que la console est réellement visible dans Xcode (par exemple, assurez-vous que l'icône de droite est surlignée en bleu, comme sur l'image ci-dessous). Après avoir mis à niveau Xcode, il cache la console et ne m'a montré que la vue Variables. Cela donnait l'impression que cela
NSLog()
ne fonctionnait pas correctement, alors que cela fonctionnait correctement, je ne pouvais tout simplement pas voir la sortie.la source
Shift + ⌘ + C
version 8.3.3 de XcodeHmmm ... il semble que la propriété "OS_ACTIVITY_MODE": "disable" Empêche NSlog de s'afficher dans le journal Xcode 9.
Décocher cette valeur dans mon schéma a restauré mes journaux.
la source
Pour quiconque découvre cela à l'avenir. La raison pour laquelle NSLog n'imprime pas dans syslog dans iOS 10 et iOS 11 est due au passage d'Apple à la journalisation unifiée.
Vous pouvez voir la WWDC en parler ici: https://developer.apple.com/videos/play/wwdc2016/721/
Documentation ici: https://developer.apple.com/documentation/os/logging
À partir de 10, vous devriez utiliser os_log au lieu de NSLog.
Comment trouver les journaux sur le disque: https://www.blackbagtech.com/blog/2017/09/22/accessing-unified-logs-image/
Pour résumer, les journaux sont situés dans
/var/db/diagnostics
lesquels peuvent être trouvés pour une machine virtuelle à/Users/USERNAME/Library/Developer/CoreSimulator/Devices/SIMULATOR-GUID/data/var/db/
Copiez tous les éléments à l'intérieur
diagnostics
etuuidtext
dans un seul dossier (n'incluez pas les dossiers diagnostics ou uuidtext juste ce qu'il y a à l'intérieur).Renommez ce dossier
foldername.xarchive
.Ouvrez-le dans Console.app ou utilisez l'utilitaire OSX
log
:log show <path to archive> --info --predicate <options>
la source
J'utilise Xcode 8, donc j'ai également rencontré le même problème. Et j'ai résolu ce problème en ajoutant
value = disable
le simulateur, mais sur une vraie machine, je n'ajoute pas de valeur.la source
disable
pardefault
.OS_ACTIVITY_MODE
avecdisable
oudefault
est directNSLog
les messages ne s'affichent plus lorsque je suis passé à Xcode 9.1 + iOS 11.1. Au départ, la réponse acceptée m'a donné un moyen de contourner ce problème en utilisant l'application Console et en activant le simulateur ( voir la réponse de Lucas ).Dans l'application Console sous
Action
j'ai essayé de sélectionnerInclude Debug Messages
et de désélectionnerInclude Info Messages
(pour que la console ne soit pas submergée de messages système).NSLog
des messages sont apparus dans la fenêtre de la console dans Xcode mais pas dans l'application de la console.J'ai réalisé qu'il devait y avoir un moyen plus direct pour
disable
ou permettre (c'est-à-diredefault
)NSLogs
grâce au commentaire de Coeur en réponse à cette réponse. À mon avis , il est la meilleure réponse , car la miseOS_ACTIVITY_MODE
àdisable
oudefault
aura plus de sens pour les débutants.la source