iOS (iPhone, iPad, iPodTouch) zeigt das Echtzeit-Konsolenprotokollterminal an

123

Gibt es eine Möglichkeit, das Echtzeit-Konsolenprotokoll anzuzeigen, um NSLog und andere Debug-Meldungen in Echtzeit anzuzeigen, z. B. adb logcat?

Arunabh Das
quelle
1
Wollen Sie damit sagen, dass Sie ein IOS-Äquivalent von möchten Utilities/Console.app?
BryanH

Antworten:

155

Die von Apple in den technischen Fragen und Antworten QA1747 Debugging von bereitgestellten iOS-Apps für Xcode 6 dokumentierte Lösung lautet:

  1. Wählen Sie im Xcode-Menü Fenster -> Geräte.
  2. Wählen Sie das Gerät in der linken Spalte.
  3. Klicken Sie auf das obere Dreieck unten links im rechten Bereich, um die Gerätekonsole anzuzeigen.

Screenshot mit Dreieck

Marián Černý
quelle
4
Meiner Meinung nach ist dies die einfachste Lösung.
Bart van Kuik
In Xcode 6.4 wird eine Schaltfläche mit der Aufschrift "Geräteprotokolle anzeigen" angezeigt, die mir jedoch Absturzprotokolle liefert. Ich sehe keine Möglichkeit, das Konsolenprotokoll abzurufen.
Chris Prince
4
Ich habe einen Screenshot mit dem Up-Triangle-Symbol hinzugefügt.
Marián Černý
1
printAnweisungen werden nicht protokolliert, sondern nur an stdout. Verwenden Sie NSLogstattdessen. Oder es ist möglich, stdoutmit zusätzlichem Code zu einer Datei umzuleiten . Abstürze werden protokolliert und können über die Schaltfläche "Geräteprotokolle anzeigen" aufgerufen werden.
Marián Černý
3
Diese Schaltfläche wurde in xCode 9.3 deaktiviert. Es hat jetzt eine "Console.app" -Button, was viel sinnvoller ist.
Rusty Magnet
79

BEARBEITEN: Bitte verwenden Sie die @ cbowns-Lösung - die Gerätekonsole ist mit iOS9 kompatibel und viel einfacher zu verwenden.

Dies ist ein Open-Source-Programm, das das Systemprotokoll des iDevice im Terminal anzeigt (ähnlich wie tail -F). Es ist kein Jailbreak erforderlich, und die Ausgabe ist vollständig grep'able, sodass Sie filtern können, um nur die Ausgabe Ihres Programms anzuzeigen. Das Besondere an dieser Lösung ist, dass Sie im Protokoll anzeigen können, ob die App im Debug-Modus von XCode aus gestartet wurde oder nicht.

Hier ist wie:

Holen Sie sich die libimobiledevice-Binärdatei für Mac OS X aus meinem Github-Konto unter https://github.com/benvium/libimobiledevice-macosx/zipball/master

Befolgen Sie die Installationsanweisungen hier: https://github.com/benvium/libimobiledevice-macosx/blob/master/README.md

Schließen Sie Ihr Gerät an, öffnen Sie Terminal.app und geben Sie Folgendes ein:

idevicesyslog

Nach oben wird eine Echtzeitanzeige des Systemprotokolls des Geräts angezeigt.

Da es sich um eine Konsolen-App handelt, können Sie das Protokoll mit Unix-Befehlen wie grep filtern

Zeigen Sie beispielsweise alle Protokollnachrichten einer bestimmten App an:

idevicesyslog | grep myappname

Entnommen aus meinem Blog unter http://pervasivecode.blogspot.co.uk/2012/06/view-log-output-of-any-app-on-iphone-or.html

Ben Clayton
quelle
4
Es scheint, dass dies mit dem iOS-Simulator nicht funktioniert. Schade. No device found, is it plugged in?
Asche999
Es kann nicht unter iOS10 funktionieren. "usbmuxd_send: Fehler -1 beim Senden: Rohrbruch" Wie kann ich das Problem beheben?
Victor Choy
2
Wenn ich idevicesys ohne sudo ausführe, wird der kryptische Fehler "Dienst com.apple.syslog_relay konnte nicht gestartet werden" angezeigt. Vielleicht hängt es davon ab, wie Sie es installieren oder so.
Björn Roche
Tun Sie dies, wenn es für Sie nicht funktioniert ...brew uninstall libimobiledevice ideviceinstaller && brew install --HEAD libimobiledevice ideviceinstaller
Akshet
77

Zwei Optionen:

libimobiledevice kann über Homebrew installiert werden und funktioniert hervorragend. Das idevicesyslogTool funktioniert ähnlich wie deviceconsole(unten) und unterstützt das drahtlose Anzeigen des Syslogs Ihres Geräts (!).

Ich habe mehr darüber auf Tumblr tl geschrieben; dr:

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

mit dem Gerät über USB verbunden oder im lokalen drahtlosen Netzwerk verfügbar.

Ab 2013: Die Gerätekonsole von rpetrich ist eine viel weniger ausgeflippte Lösung als die oben genannte ideviceconsole. Mein Zweig davon wird sofort in Xcode 5 erstellt und ausgeführt, und die Build-Aktion installiert die Binärdatei, /usr/local/binum die Verwendung zu vereinfachen.

Als zusätzliche hilfreiche Information verwende ich sie im folgenden Stil, der es einfach macht, das gewünschte Gerät in meinem Shell-Verlauf zu finden und unnötige >Zeilen zu entfernen , die deviceconsoleausgedruckt werden.

deviceconsole -d -u <device UDID> | uniq -u && echo "<device name>"
cbowns
quelle
Danke für diesen Beitrag. Es ist genau das, wonach ich gesucht habe. Ich kann es kaum erwarten, iOS zu meinem GUI Mobile LogCat-Tool hinzuzufügen: github.com/yepher/LogCat
Yepher
2
Das ist großartig - das Kompilieren und Ausführen dauerte 2 Minuten. Dies sollte die akzeptierte Antwort sein.
Nick Farina
Dies ist eine schöne Lösung. Und wollte nur hinzufügen, dass die Sammlung immer noch für iOS8 funktioniert (wie es sollte!)
Kelly
1
@BugaBuga Stellen Sie sicher, dass Sie die neueste verwenden libimobiledevice. (Kabelgebundene und drahtlose Protokollanzeige funktionieren mit meinem Mac unter 10.11 und meinem iPhone unter iOS 10.2)
cbowns
1
github.com/libimobiledevice/libimobiledevice/issues/356 . Verwenden Sie : brew install --HEAD libimobiledevice. Hat für mich gearbeitet.
Rusty Magnet
21

Öffnen Sie einfach die Anwendung Console.appauf Mac OSX.

Sie können es finden Sie unter Applications> Utilities> Console.

Auf der linken Seite der Anwendung werden alle angeschlossenen Geräte aufgelistet.

einsA
quelle
2
Dies ist eine großartige Lösung. Ich kann die Suchfunktion verwenden, um die Live- / "Jetzt" -Protokolle für mein Gerät grundsätzlich zu "grep".
Rob
14

Probieren Sie die Freeware- iOS-Konsole aus . Einfach herunterladen, starten, Gerät anschließen - et voila!

Peter Gluck
quelle
1
Es ist interessant, aber ich kann nicht auswählen, auf welchem ​​Gerät das Konsolenprotokoll angezeigt werden soll, wenn mehrere Geräte mit dem Mac verbunden sind.
Leolobato
So einfach und funktioniert unter iOS 12, dass ich frustriert bin, zu wissen, wie einfach die Protokollierung für einen Entwickler sein sollte, und hier lande. Vielen Dank, dass Sie Peter
FreeAppl3
warum nicht Console.app[was wird nativ unter macOS ausgeliefert]?
rustyMagnet
6

Dies könnte das sein, wonach Sie suchen: Xcode Organizer

BryanH
quelle
Ja ... aber aus irgendeinem Grund ist die Konsole im Xcode Organizer weniger in Echtzeit, da sie sich in einem GUI-Fenster befindet. Ich hatte gehofft, die Shell auf dem Gerät direkt auf tail -f <logfilename>
Arunabh Das
Sie können eine Shell nur dann auf dem Gerät installieren, wenn sie einen Jailbreak aufweist.
Programm
Danke Progrmr. Ich möchte Ihre Antwort als die richtige Antwort akzeptieren. Könnten Sie bitte auch Links für HowTo zum Abrufen einer Shell auf einem Gerät mit Jailbreak veröffentlichen? Vielen Dank!!
Arunabh Das
@ArunabhDas Bitte erwägen Sie, die akzeptierte Antwort in die idevicesyslog-Antwort von Ben Clayton zu ändern. Seine Lösung war genau das, wonach ich gesucht hatte, um In-App-Käufe mit einer iOS-App unter Verwendung der CoronaSDK-Plattform zu debuggen. Der Xcode Organizer war langsam und umständlich beim Anzeigen von Protokollinformationen.
Anthony F
5

Gerät> Terminalausgabe erfolgt über die iPhone-Konfigurations-App

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

Küche
quelle
1
Dieser Link ist nicht mehr gültig. Ich glaube, der aktualisierte Name der App lautet Apple Configurator und ist hier verfügbar: itunes.apple.com/us/app/apple-configurator/id434433123?mt=12 Es handelt sich jedoch um OS X 10.10+.
ThomasW
1
@ThomasW: Leider scheint der Apple Configurator nicht in der Lage zu sein, Geräteprotokolle anzuzeigen, wie dies das iPhone Configuration Utility tut / tat.
Newenglander
1
Es tut. Installieren Sie einfach die Automatisierungstools aus dem Menü. krypted.com/iphone/…
Sune Kjærgård
2

Sie haben drei Möglichkeiten:

  • Xcode Organizer
  • Gerät mit Jailbreak mit syslogd + openSSH
  • Verwenden Sie dup2, um alle STDERR und STDOUT in eine Datei umzuleiten, und "tail -f" diese Datei (diese letzte ist eher eine Simulatorsache, da Sie das gleiche Problem haben, eine Datei auf dem Gerät zu verfolgen).

Um die 2º zu erhalten, müssen Sie nur syslogd und OpenSSH von Cydia installieren. Starten Sie den Computer neu, nachdem Sie syslogd zum Laufen gebracht haben. Öffnen Sie jetzt einfach eine SSH-Sitzung auf Ihrem Gerät (über Terminal oder Putty unter Windows) und geben Sie "tail -f / var / log / syslog" ein. Und los geht's, drahtloses Echtzeit-Systemprotokoll.

Wenn Sie die 3º ausprobieren möchten, suchen Sie einfach online nach "dup2", es ist ein Systemaufruf.

Fbernardo
quelle
0

So zeigen Sie die Konsole Ihres iOS-Geräts in Safari auf Ihrem Mac an (anscheinend nur Mac):

  1. Gehen Sie auf Ihrem iOS-Gerät zu Einstellungen> Safari> Erweitert und aktivieren Sie Web Inspector
  2. Laden Sie auf Ihrem iOS-Gerät Ihre Webseite in Safari
  3. Schließen Sie Ihr Gerät direkt an Ihren Mac an
  4. Wenn Sie auf Ihrem Mac das Entwicklermenü von Safari noch nicht aktiviert haben, gehen Sie zu Einstellungen> Erweitert und wählen Sie "Menü" Entwickeln "in der Menüleiste anzeigen".
  5. Gehen Sie auf Ihrem Mac zu Entwickeln> [Ihr iOS-Gerätename]> [Ihre Webseite]

Der Inspektor von Safari zeigt eine Konsole für Ihr iOS-Gerät an.

Nick
quelle
3
Wir können das Safari-Konsolenprotokoll sehen, nicht das App-Protokoll.
Gamma-Punkt
Dies funktioniert für den Emulator ... Ich habe es nicht mit einem tatsächlichen Gerät versucht.
Skizze, dass
0

Alternativ können Sie ein Protokollierungstool auf dem Bildschirm wie Ticker-Log verwenden , um Protokolle anzuzeigen, ohne (bequemen) Zugriff auf die Konsole zu haben.

Jonathan.Brink
quelle