iOS (iPhone, iPad, iPodTouch) affiche le terminal de journal de la console en temps réel


Réponses:


155

La solution documentée par Apple dans les questions et réponses techniques QA1747 Débogage des applications iOS déployées pour Xcode 6 est:

  1. Choisissez Fenêtre -> Appareils dans le menu Xcode.
  2. Choisissez l'appareil dans la colonne de gauche.
  3. Cliquez sur le triangle haut en bas à gauche du panneau de droite pour afficher la console de l'appareil.

Capture d'écran avec triangle haut


4
À mon avis, c'est la solution la plus simple.
Bart van Kuik

Dans Xcode 6.4, je vois un bouton disant "Afficher les journaux de périphérique", mais qui me donne des journaux de plantage. Je ne vois pas de moyen d'obtenir le journal de la console.
Chris Prince

4
J'ai ajouté une capture d'écran avec l'icône du triangle haut.
Marián Černý le

1
printles instructions ne vont pas au journal, seulement à stdout. Utilisez NSLogplutôt. Ou il peut être possible de rediriger stdoutvers un fichier avec du code ajouté. Les plantages sont enregistrés et peuvent être consultés à l'aide du bouton "Afficher les journaux de l'appareil".
Marián Černý

3
Ce bouton a été retiré dans xCode 9.3. Il a maintenant un bouton "Console.app", ce qui est beaucoup plus logique.
rustyMagnet

79

EDIT: Veuillez utiliser la solution @cbowns - deviceconsole est compatible avec iOS9 et beaucoup plus facile à utiliser.

Il s'agit d'un programme open source qui affiche le journal système de l'iDevice dans Terminal (d'une manière similaire à tail -F). Aucun jailbreak n'est requis, et la sortie est entièrement grep'able afin que vous puissiez filtrer pour voir uniquement la sortie de votre programme. Ce qui est particulièrement intéressant avec cette solution, c'est que vous pouvez afficher le journal, que l'application ait été lancée ou non en mode débogage à partir de XCode.

Voici comment:

Récupérez le binaire libimobiledevice pour Mac OS X depuis mon compte github à l' adresse https://github.com/benvium/libimobiledevice-macosx/zipball/master

Suivez les instructions d'installation ici: https://github.com/benvium/libimobiledevice-macosx/blob/master/README.md

Connectez votre appareil, ouvrez Terminal.app et tapez:

idevicesyslog

Up affiche un affichage en temps réel du journal système de l'appareil.

Étant donné qu'il s'agit d'une application console, vous pouvez filtrer le journal à l'aide de commandes unix, telles que grep

Par exemple, consultez tous les messages du journal d'une application particulière:

idevicesyslog | grep myappname

Tiré de mon blog à http://pervasivecode.blogspot.co.uk/2012/06/view-log-output-of-any-app-on-iphone-or.html


4
Il semble que cela ne fonctionne pas avec le simulateur iOS. Bummer. No device found, is it plugged in?
ashes999

Cela ne peut pas fonctionner sur iOS10. "usbmuxd_send: Erreur -1 lors de l'envoi: Pipe cassée" Comment le résoudre?
Victor Choy

2
Lorsque j'exécute idevicesys sans sudo, j'obtiens une erreur cryptique concernant "Impossible de démarrer le service com.apple.syslog_relay". Cela dépend peut-être de la façon dont vous l'installez ou de quelque chose.
Bjorn Roche

Faites-le si cela ne fonctionne pas pour vous ...brew uninstall libimobiledevice ideviceinstaller && brew install --HEAD libimobiledevice ideviceinstaller
Akshet

77

Deux options:

libimobiledevice est installable via homebrew et fonctionne très bien. Son idevicesyslogoutil fonctionne de la même manière que deviceconsole(ci-dessous), et il prend en charge l'affichage sans fil du syslog de votre appareil (!)

J'ai écrit plus à ce sujet sur Tumblr tl; dr:

brew install libimobiledevice
idevice_id --list // list available device UDIDs
idevicesyslog -u <device udid>

avec l'appareil connecté via USB ou disponible sur le réseau sans fil local.

À partir de 2013: deviceconsole de rpetrich est une solution beaucoup moins farfelue que l'ideviceconsole ci-dessus. Mon fork de celui-ci se construit et s'exécute dans Xcode 5 hors de la boîte, et l'action Build installera le binaire /usr/local/binpour en faciliter l'utilisation.

Comme information supplémentaire utile, je l'utilise dans le style suivant, ce qui facilite la recherche de l'appareil que je veux dans mon historique de shell et supprime les >lignes inutiles qui deviceconsoles'impriment.

deviceconsole -d -u <device UDID> | uniq -u && echo "<device name>"

Merci pour ce post. C'est exactement ce que je cherchais. J'ai hâte d'ajouter iOS à mon outil LogCat mobile GUI: github.com/yepher/LogCat
Yepher

2
C'est génial - il a fallu 2 minutes pour compiler et exécuter. Cela devrait être la réponse acceptée.
Nick Farina

C'est une belle solution. Et je voulais juste ajouter que la collection fonctionne toujours pour iOS8 (comme il se doit!)
Kelly

1
@BugaBuga Assurez-vous que vous utilisez la dernière version libimobiledevice. (La visualisation des journaux avec et sans fil fonctionne avec mon Mac sur 10.11 et mon iPhone sur iOS 10.2)
cbowns

1
github.com/libimobiledevice/libimobiledevice/issues/356 . Utilisation: brew install --HEAD libimobiledevice. A travaillé pour moi.
rustyMagnet

21

Ouvrez simplement l'application Console.appsur mac osX.

Vous pouvez le trouver sous Applications> Utilities> Console.

Sur le côté gauche de l'application, tous vos appareils connectés sont répertoriés.


2
C'est une excellente solution. Je peux utiliser la fonction de recherche pour "grep" essentiellement les journaux en direct / "Maintenant" de mon appareil.
Rob

14

Essayez la console iOS gratuite . Téléchargez, lancez, connectez votre appareil - et voilà!


1
c'est intéressant, mais cela ne me permettra pas de choisir quel appareil afficher le journal de la console si j'en ai plusieurs connectés au Mac.
leolobato

si simple et fonctionne très bien sur iOS 12, je suis frustré de savoir à quel point la journalisation devrait être simple pour un développeur et me retrouver ici. Merci Peter
FreeAppl3

pourquoi pas Console.app[qui est livré nativement sur macOS]?
rustyMagnet

6

C'est peut-être ce que vous recherchez: Xcode Organizer


Oui ... mais pour une raison quelconque, la console de Xcode Organizer est moins temps réel car elle se trouve dans une fenêtre GUI. J'espérais un moyen d'invoquer le shell sur l'appareil directement à tail -f <logfilename>
Arunabh Das

Vous ne pouvez obtenir un shell sur l'appareil que s'il est jailbreaké.
programme le

Merci progrmr. Je voudrais accepter votre réponse comme la bonne réponse. Pourriez-vous également publier des liens pour HowTo sur l'obtention d'un shell sur un appareil jailbreaké? Merci!!
Arunabh Das

@ArunabhDas Veuillez envisager de changer la réponse acceptée par la réponse idevicesyslog de Ben Clayton. Sa solution était exactement ce que je recherchais pour déboguer les achats intégrés avec une application iOS utilisant la plate-forme CoronaSDK. L'organisateur Xcode était lent et encombrant pour afficher les informations du journal.
Anthony F

5

appareil> la sortie du terminal est sur l'application de configuration iPhone

ici: http://support.apple.com/kb/DL1465


1
Ce lien n'est plus valide. Je pense que le nom mis à jour de l'application est Apple Configurator et est disponible ici: itunes.apple.com/us/app/apple-configurator/id434433123?mt=12 Cependant, il s'agit d'OS X 10.10+.
ThomasW

1
@ThomasW: Malheureusement, Apple Configurator ne semble pas avoir la capacité d'afficher les journaux de l'appareil comme le fait / l'utilitaire de configuration iPhone.
newenglander

1
Cela fait. Installez simplement les outils d'automatisation à partir du menu. krypted.com/iphone/…
Sune Kjærgård

2

Vous avez trois options:

  • Organisateur Xcode
  • Appareil jailbreaké avec syslogd + openSSH
  • Utilisez dup2 pour rediriger tous les STDERR et STDOUT vers un fichier, puis "tail -f" ce fichier (ce dernier est plus un simulateur, car vous êtes coincé avec le même problème de suivi d'un fichier sur l'appareil).

Donc, pour obtenir le 2º, il vous suffit d'installer syslogd et OpenSSH à partir de Cydia, redémarrer nécessaire après pour lancer syslogd; maintenant, ouvrez simplement une session ssh sur votre appareil (via un terminal ou un putty sous Windows), et tapez "tail -f / var / log / syslog". Et voilà, journal du système sans fil en temps réel.

Si vous souhaitez essayer le 3º, recherchez simplement "dup2" en ligne, c'est un appel système.


0

Pour afficher la console de votre appareil iOS dans Safari sur votre Mac (Mac uniquement apparemment):

  1. Sur votre appareil iOS, accédez à Paramètres> Safari> Avancé et activez l'inspecteur Web
  2. Sur votre appareil iOS, chargez votre page Web dans Safari
  3. Connectez votre appareil directement à votre Mac
  4. Sur votre Mac, si vous n'avez pas encore activé le menu Développeur de Safari, allez dans Préférences> Avancé et sélectionnez "Afficher le menu Développement dans la barre de menus"
  5. Sur votre Mac, accédez à Développer> [nom de votre appareil iOS]> [votre page Web]

L'inspecteur de Safari apparaîtra montrant une console pour votre appareil iOS.


3
nous pouvons voir le journal de la console Safari et non le journal de l'application.
Gamma-Point

Cela fonctionne pour l'émulateur ... Je ne l'ai pas essayé avec un appareil réel.
sketchthat

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.