Ich möchte sehen, was im iOS-Simulator passiert, wenn ich die App nicht in Xcode teste.
Wenn ich beispielsweise einen Link im Safari-Simulator öffne, sehen Sie, was in der Konsole passiert, Oder wenn ich eine Web-App installiere, die Links, die ich in der Konsole drücke.
Wie kann ich das machen?
Ich möchte es in Xcode oder Terminal sehen, aber es ist kein Problem, wenn ich ein anderes Stück Software verwenden muss.
iOS-Simulator> Menüleiste> Debuggen> Systemprotokoll öffnen
Alte Wege:
der iOS-Simulator druckt seine Protokolle direkt in stdout, sodass Sie die Protokolle mit Systemprotokollen vermischt sehen können.
Öffnen Sie das Terminal und geben Sie Folgendes ein: tail -f /var/log/system.log
Dann den Simulator laufen lassen.
BEARBEITEN:
Die Arbeit mit Mavericks/Xcode 5 wurde beendet. Jetzt können Sie auf die Simulatorprotokolle in einem eigenen Ordner zugreifen: ~/Library/Logs/iOS Simulator/<sim-version>/system.log
Sie können entweder Console.app verwenden, um dies zu sehen, oder einfach nur einen Schwanz machen (iOS 7.0.3, 64 Bit zum Beispiel):
tail -f ~/Library/Logs/iOS\ Simulator/7.0.3-64/system.log
EDIT 2:
Sie befinden sich jetzt in ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log
tail -f ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log
Sie können die Konsole für den iOS-Simulator über Desktop Safari anzeigen. Diese Vorgehensweise ähnelt der von Desktop Safari, um die Konsole für physische iOS-Geräte anzuzeigen.
Wenn der Simulator ausgeführt wird und eine Webseite geöffnet ist, wird in der Desktopsafari im Menü "Entwickeln" eine Option angezeigt, mit der Sie die iOS-Simulatorkonsole sehen können:
Entwickeln -> iPhone Simulator -> Site-Name
Unter iOS 8 und iOS 9 ist dieser Ort jetzt:
~/Library/Logs/CoreSimulator/<DEVICE_CODE>
Also wird folgendes funktionieren:
tail -f ~/Library/Logs/CoreSimulator/<DEVICE_CODE>/system.log
Der DEVICE_CODE
-Wert kann über den folgenden Konsolenbefehl ermittelt werden:
instruments -s devices
Sie sollten sich nicht auf instruments -s
verlassen. Das offiziell unterstützte Werkzeug für die Arbeit mit Simulatoren über die Befehlszeile ist xcrun simctl
.
Das Protokollverzeichnis für ein Gerät kann mit xcrun simctl getenv booted SIMULATOR_LOG_ROOT
gefunden werden. Dies ist immer korrekt, auch wenn sich der Standort ändert.
Jetzt, da sich Dinge auf os_log
verschieben, ist es einfacher, Console.app auf dem Host-Mac zu öffnen. Gebootete Simulatoren sollten auf der linken Seite als Protokollquelle angezeigt werden, genau wie physische Geräte. Sie können auch Protokollbefehle im gebooteten Simulator ausführen:
# 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`
Wenn Sie Safari Developer-Tools (einschließlich der JS-Konsole) mit einer Webseite im Simulator verwenden möchten : Starten Sie einen der Simulatoren, öffnen Sie Safari, gehen Sie zu Safari auf Ihrem Mac und Sie sollten Simulator im Menü sehen.
Sie können eine URL im Simulator öffnen, indem Sie sie aus der Adressleiste von Safari ziehen und im Simulatorfenster ablegen. Sie können auch xcrun simctl openurl booted <url>
verwenden.
Wenn Sie Swift verwenden, denken Sie daran, dass println
nur im Debug-Protokoll (das im Debug-Bereich von xCode angezeigt wird) gedruckt wird. Wenn Sie in system.log drucken möchten, müssen Sie NSLog
wie früher verwenden.
Dann können Sie das Simulatorprotokoll über das Menü Debug> Open System Log ... (cmd + /) anzeigen.
tailing /var/log/system.log
hat bei mir nicht funktioniert. Ich habe meine Protokolle mit Console.app
gefunden. Sie waren in
~/Library/Logs/iOS Simulator/{version}/system.log
XCode> 6.0 UND iOS> 8.0 Das folgende Skript funktioniert, wenn Sie eine XCode-Version> 8.0 haben
Ich verwende das unten stehende kleine Skript, um die Protokolle des Simulators an die Systemkonsole anzulegen.
#!/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
Sie können den im Grep verwendeten Simulatortyp als Argument übergeben. Wie in den obigen Beiträgen erwähnt, gibt es den Befehl simctl und instruments, um den Typ der zur Verwendung verfügbaren Simulatoren anzuzeigen, abhängig von der Xcode-Version.
xcrun instruments -s
ODER
xcrun simctl list
Jetzt können Sie den Gerätecode OR Simulatortyp als Argument an das Skript übergeben und das "iPhone 6 (8.2 Simulator)" in grep durch $ 1 ersetzen
Ich kann das Protokoll direkt über den iOS-Simulator öffnen: Debug -> Open System Log...
Nicht sicher, wann dies eingeführt wurde, daher ist es möglicherweise nicht für frühere Versionen verfügbar.