Je veux voir ce qui se passe dans le simulateur iOS si je ne teste pas l'application dans Xcode.
Par exemple, si j'ouvre un lien dans le simulateur Safari, voir ce qui se passe dans la console, .__ ou si j'installe une application Web, voir les liens que j'appuie dans la console.
Comment puis-je faire ceci?
Je veux le voir dans Xcode ou Terminal, mais ce n'est pas un problème si j'ai besoin d'un autre logiciel.
simulateur iOS> Barre de menus> Débogage> Ouvrir le journal système
Vieilles manières:
iOS Simulator imprime ses journaux directement sur stdout afin que vous puissiez voir les journaux mélangés avec les journaux du système.
Ouvrez le terminal et tapez: tail -f /var/log/system.log
Ensuite, lancez le simulateur.
MODIFIER:
Cela a cessé de fonctionner sur Mavericks/Xcode 5. Vous pouvez maintenant accéder aux journaux du simulateur dans son propre dossier: ~/Library/Logs/iOS Simulator/<sim-version>/system.log
Vous pouvez soit utiliser le fichier Console.app pour voir cela, ou simplement faire une queue (iOS 7.0.3 64 bits par exemple):
tail -f ~/Library/Logs/iOS\ Simulator/7.0.3-64/system.log
EDIT 2:
Ils sont maintenant situés dans ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log
tail -f ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log
Vous pouvez afficher la console du simulateur iOS via le bureau Safari. Cela ressemble à la façon dont vous utilisez Safari sur le bureau pour afficher la console des périphériques iOS physiques.
Chaque fois que le simulateur est en cours d'exécution et qu'une page Web est ouverte, une option du menu Développement du navigateur Safari sur le bureau vous permet de voir la console du simulateur iOS:
Develop -> iPhone Simulator -> nom du site
Sous iOS 8 et iOS 9, cet emplacement est maintenant:
~/Library/Logs/CoreSimulator/<DEVICE_CODE>
Donc, ce qui suit fonctionnera:
tail -f ~/Library/Logs/CoreSimulator/<DEVICE_CODE>/system.log
La valeur DEVICE_CODE
peut être trouvée via la commande de console suivante:
instruments -s devices
Vous ne devriez pas compter sur instruments -s
. L'outil officiellement pris en charge pour utiliser les simulateurs à partir de la ligne de commande est xcrun simctl
.
Le répertoire de journal d'un périphérique peut être trouvé avec xcrun simctl getenv booted SIMULATOR_LOG_ROOT
. Cela sera toujours correct même si l'emplacement change.
Maintenant que les choses passent à os_log
, il est plus facile d'ouvrir Console.app sur le Mac hôte. Les simulateurs démarrés doivent apparaître comme une source de journal à gauche, tout comme les périphériques physiques. Vous pouvez également exécuter des commandes de journalisation dans le simulateur démarré:
# os_log equivalent of tail -f
xcrun simctl spawn booted log stream --level=debug
# filter log output
xcrun simctl spawn booted log stream --predicate 'processImagePath endswith "myapp"'
xcrun simctl spawn booted log stream --predicate 'eventMessage contains "error" and messageType == info'
# a log dump that Console.app can open
xcrun simctl spawn booted log collect
# open location where log collect will write the dump
cd `xcrun simctl getenv booted SIMULATOR_SHARED_RESOURCES_DIRECTORY`
Si vous souhaitez utiliser les outils de développement Safari (y compris la console JS) avec une page Web dans le simulateur : Démarrez l’un des simulateurs, ouvrez Safari, puis accédez à Safari sur votre Mac et affichez Simulateur dans le menu.
Vous pouvez ouvrir une URL dans le simulateur en la faisant glisser depuis la barre d'adresse de Safari et en la déposant dans la fenêtre du simulateur. Vous pouvez également utiliser xcrun simctl openurl booted <url>
.
Si vous utilisez Swift , rappelez-vous que println
sera uniquement imprimé dans le journal de débogage (qui apparaît dans la zone de débogage de xCode). Si vous souhaitez imprimer sur le fichier system.log, vous devez utiliser NSLog
comme auparavant.
Vous pouvez ensuite afficher le journal du simulateur via son menu, Debug> Ouvrir le journal système ... (cmd + /)
la queue /var/log/system.log
n'a pas fonctionné pour moi. J'ai trouvé mes journaux en utilisant Console.app
. Ils étaient en
~/Library/Logs/iOS Simulator/{version}/system.log
XCode> 6.0 ET iOS> 8.0 Le script ci-dessous fonctionne si vous avez la version XCode> 8.0.
J'utilise le petit script ci-dessous pour relier les journaux du simulateur à la console système.
#!/bin/sh
sim_dir=`xcrun instruments -s | grep "iPhone 6 (8.2 Simulator)" | awk {'print $NF'} | tr -d '[]'`
tail -f ~/Library/Logs/CoreSimulator/$sim_dir/system.log
Vous pouvez transmettre le type de simulateur utilisé dans le Grep en tant qu'argument. Comme mentionné dans les articles ci-dessus, il existe une commande simctl and instruments permettant d'afficher le type de simulateurs utilisables en fonction de la version de Xcode.
xcrun instruments -s
OU
xcrun simctl list
Vous pouvez maintenant passer le type de simulateur de code de périphérique OR en tant qu'argument au script et remplacer le "iPhone 6 (Simulateur 8.2)" à l'intérieur de grep par $ 1.
Je peux ouvrir le journal directement via le simulateur iOS: Debug -> Open System Log...
Je ne sais pas quand cela a été introduit, il est donc possible qu'il ne soit pas disponible pour les versions antérieures.