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.