iOS (iPhone, iPad, iPodTouch) wyświetla terminal dziennika konsoli w czasie rzeczywistym


Odpowiedzi:


155

Rozwiązanie udokumentowane przez Apple w pytaniach technicznych i odpowiedziach QA1747 Debugowanie wdrożonych aplikacji iOS dla Xcode 6 to:

  1. Wybierz Okno -> Urządzenia z menu Xcode.
  2. Wybierz urządzenie w lewej kolumnie.
  3. Kliknij trójkąt w górę w lewym dolnym rogu prawego panelu, aby wyświetlić konsolę urządzenia.

Zrzut ekranu z trójkątem w górę


4
Moim zdaniem to najłatwiejsze rozwiązanie.
Bart van Kuik

W Xcode 6.4 widzę przycisk „Wyświetl dzienniki urządzeń”, który wyświetla dzienniki awarii. Nie widzę sposobu na uzyskanie dziennika konsoli.
Chris Prince,

4
Dodałem zrzut ekranu z ikoną trójkąta w górę.
Marián Černý

1
printoświadczenia nie przechodzą do dziennika, tylko do stdout. Użyj NSLogzamiast tego. Lub może być możliwe przekierowanie stdoutdo pliku z dodanym kodem. Awarie są rejestrowane i można uzyskać do nich dostęp za pomocą przycisku „Wyświetl dzienniki urządzeń”.
Marián Černý

3
Ten przycisk został wycofany w xCode 9.3. Ma teraz przycisk „Console.app”, co ma o wiele większy sens.
rustyMagnet

79

EDYCJA: Użyj rozwiązania @cbowns - deviceconsole jest kompatybilne z iOS9 i znacznie łatwiejsze w użyciu.

Jest to program typu open source, który wyświetla dziennik systemowy urządzenia iDevice w Terminalu (w sposób podobny do tail -F). Nie jest wymagane żadne jailbreak, a wyjście jest w pełni grepowalne, więc możesz filtrować, aby zobaczyć tylko wyjście z twojego programu. Szczególnie dobre w tym rozwiązaniu jest to, że możesz wyświetlić dziennik, czy aplikacja została uruchomiona w trybie debugowania z XCode.

Oto jak:

Pobierz plik binarny libimobiledevice dla systemu Mac OS X z mojego konta github pod adresem https://github.com/benvium/libimobiledevice-macosx/zipball/master

Postępuj zgodnie z instrukcjami instalacji tutaj: https://github.com/benvium/libimobiledevice-macosx/blob/master/README.md

Podłącz urządzenie, otwórz Terminal.app i wpisz:

idevicesyslog

W górę wyskakuje wyświetlanie dziennika systemowego urządzenia w czasie rzeczywistym.

Ponieważ jest to aplikacja konsolowa, możesz filtrować dziennik za pomocą poleceń unix, takich jak grep

Na przykład zobacz wszystkie komunikaty dziennika z określonej aplikacji:

idevicesyslog | grep myappname

Zaczerpnięte z mojego bloga pod adresem http://pervasivecode.blogspot.co.uk/2012/06/view-log-output-of-any-app-on-iphone-or.html


4
Wygląda na to, że to nie działa z symulatorem iOS. Porażka. No device found, is it plugged in?
popioły 999

Nie działa na iOS10. "usbmuxd_send: Błąd -1 podczas wysyłania: Uszkodzony przewód" Jak to rozwiązać?
Victor Choy,

2
Kiedy uruchamiam idevicesys bez sudo, pojawia się tajemniczy błąd „Nie można uruchomić usługi com.apple.syslog_relay”. Może to zależy od tego, jak to zainstalujesz, czy coś.
Bjorn Roche

Zrób to, jeśli to nie działa ...brew uninstall libimobiledevice ideviceinstaller && brew install --HEAD libimobiledevice ideviceinstaller
Akszet

77

Dwie opcje:

libimobiledevice można zainstalować przez homebrew i działa świetnie. Jego idevicesyslognarzędzie działa podobnie dodeviceconsole (poniżej) i obsługuje bezprzewodowe przeglądanie syslog urządzenia (!)

Więcej o tym napisałem na Tumblr tl; dr:

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

z urządzeniem podłączonym przez USB lub dostępnym w lokalnej sieci bezprzewodowej.

Od 2013 roku: deviceconsole od rpetrich jest znacznie mniej oszukanym rozwiązaniem niż ideviceconsole powyżej. Moje rozwidlenie kompiluje się i działa w Xcode 5 po wyjęciu z pudełka, a akcja Build zainstaluje plik binarny w /usr/local/bincelu ułatwienia użytkowania.

Jako dodatkowa pomocna informacja, używam jej w następującym stylu, który ułatwia znalezienie urządzenia, które chcę w mojej historii powłoki i usuwa niepotrzebne >linie, które są deviceconsoledrukowane.

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

Dzięki za ten post. To jest dokładnie to, czego szukałem. Nie mogę się doczekać dodania iOS do mojego mobilnego narzędzia LogCat GUI: github.com/yepher/LogCat
Tak,

2
To jest niesamowite - kompilacja i uruchomienie zajęło 2 minuty. To powinna być akceptowana odpowiedź.
Nick Farina

To cudowne rozwiązanie. I chciałem tylko dodać, że kolekcja nadal działa na iOS8 (tak jak powinna!)
Kelly

1
@BugaBuga Upewnij się, że korzystasz z najnowszej wersji libimobiledevice. (Przewodowe i bezprzewodowe przeglądanie dziennika działa na moim Macu w wersji 10.11 i moim iPhonie na iOS 10.2)
cbowns

1
github.com/libimobiledevice/libimobiledevice/issues/356 . Zastosowanie: brew install --HEAD libimobiledevice. Pracował dla mnie.
rustyMagnet

21

Po prostu otwórz aplikację Console.appna Mac OSX.

Można go znaleźć pod Applications> Utilities> Console.

Po lewej stronie aplikacji są wymienione wszystkie podłączone urządzenia.


2
To świetne rozwiązanie. Mogę użyć funkcji wyszukiwania, aby w zasadzie „grep” dzienniki na żywo / „teraz” dla mojego urządzenia.
Rob

14

Wypróbuj bezpłatną konsolę iOS . Wystarczy pobrać, uruchomić, podłączyć swoje urządzenie - i voila!


1
jest to interesujące, ale nie pozwala mi wybrać, które urządzenie ma wyświetlać dziennik konsoli, jeśli mam wiele podłączonych do komputera Mac.
leolobato

tak proste i działa świetnie na iOS 12, denerwuję się, wiedząc, jak proste powinno być logowanie dla programisty i kończy się tutaj. Dziękuję Peter
FreeAppl3

dlaczego nie Console.app[który jest dostarczany natywnie na macOS]?
rustyMagnet

6

To może być to, czego szukasz: Xcode Organizer


Tak ... ale z jakiegoś powodu konsola w Xcode Organizer działa mniej w czasie rzeczywistym, ponieważ znajduje się w oknie GUI. Liczyłem na sposób wywołania powłoki na urządzeniu bezpośrednio do tail -f <nazwa pliku dziennika>
Arunabh Das

Możesz uzyskać powłokę na urządzeniu tylko wtedy, gdy jest po jailbreaku.
progrmr

Dzięki progrmr. Chciałbym przyjąć twoją odpowiedź jako poprawną. Czy możesz również zamieścić linki do poradników dotyczących uzyskiwania powłoki na urządzeniu z jailbreakiem? Dzięki!!
Arunabh Das

@ArunabhDas Proszę rozważyć zmianę zaakceptowanej odpowiedzi na odpowiedź idevicesyslog od Bena Claytona. Jego rozwiązanie było dokładnie tym, czego szukałem do debugowania zakupów w aplikacji za pomocą aplikacji na iOS korzystającej z platformy CoronaSDK. Xcode Organizer był powolny i uciążliwy do przeglądania informacji dziennika.
Anthony F

5

urządzenie> wyjście terminala znajduje się w aplikacji konfiguracyjnej iPhone'a

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


1
Ten link nie jest już ważny. Uważam, że zaktualizowana nazwa aplikacji to Apple Configurator i jest dostępna tutaj: itunes.apple.com/us/app/apple-configurator/id434433123?mt=12 Jest to jednak system OS X 10.10+.
Thomas W

1
@ThomasW: Niestety, Apple Configurator nie wydaje się mieć możliwości przeglądania dzienników urządzeń, tak jak robi to iPhone Configuration Utility.
newenglander

1
To robi. Wystarczy zainstalować narzędzia automatyzacji z menu. krypted.com/iphone/…
Sune Kjærgård

2

Masz trzy możliwości:

  • Xcode Organizer
  • Jailbreak urządzenie z syslogd + openSSH
  • Użyj dup2, aby przekierować wszystkie STDERR i STDOUT do pliku, a następnie "tail -f" tego pliku (ten ostatni jest bardziej symulatorem, ponieważ utkniesz z tym samym problemem śledzenia pliku na urządzeniu).

Tak więc, aby uzyskać 2º, wystarczy zainstalować syslogd i OpenSSH z Cydii, po ponownym uruchomieniu wymagane jest uruchomienie syslogd; teraz po prostu otwórz sesję ssh na swoim urządzeniu (przez terminal lub putty w systemie Windows) i wpisz „tail -f / var / log / syslog”. I gotowe, bezprzewodowy dziennik systemu w czasie rzeczywistym.

Jeśli chcesz wypróbować 3º, po prostu wyszukaj „dup2” w Internecie, jest to wywołanie systemowe.


0

Aby wyświetlić konsolę urządzenia iOS w Safari na komputerze Mac (tylko najwyraźniej Mac):

  1. Na urządzeniu z systemem iOS przejdź do opcji Ustawienia> Safari> Zaawansowane i włącz Inspektor sieci
  2. Na urządzeniu z systemem iOS załaduj swoją stronę internetową w Safari
  3. Podłącz urządzenie bezpośrednio do komputera Mac
  4. Na komputerze Mac, jeśli nie masz jeszcze aktywowanego menu programisty Safari, przejdź do opcji Preferencje> Zaawansowane i wybierz opcję „Pokaż menu programowania na pasku menu”
  5. Na komputerze Mac przejdź do opcji Programowanie> [nazwa urządzenia z systemem iOS]> [Twoja strona internetowa]

Pojawi się Inspektor Safari, pokazujący konsolę dla twojego urządzenia iOS.


3
widzimy dziennik konsoli safari, a nie dziennik aplikacji.
Gamma-Point

To działa w przypadku emulatora ... Nie próbowałem tego z rzeczywistym urządzeniem.
szkic, który

0

Alternatywnie możesz użyć narzędzia do rejestrowania na ekranie , takiego jak ticker-log, aby wyświetlić dzienniki bez (wygodnego) dostępu do konsoli.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.