2015-05-14 9 views
9

Istnieje kilka pytań na ten temat, jednak żaden z nich nie wydaje się odpowiadać na konkretny problem, który mam.Debugowanie aplikacji WebView (jonowej) w systemie Android za pomocą logcat

Zajmuję się tworzeniem aplikacji z Cordova/Ionic i drukowania informacji debugowania Byłem wyjściowy z console.log() przy użyciu adb logcat CordovaLog:D *:S pracował dobrze, aż niektóre aktualizacje. Teraz nie mogę się dowiedzieć, jak właściwie filtrować dane wyjściowe logcat, więc mogłem uzyskać tylko informacje o debugowaniu z mojej aplikacji.

Logowanie działa. Jeżeli ustawić żadnych filtrów i przekierować dane wyjściowe do pliku, widzę mojego debugowania informacji wśród wszystkich innych komunikatów debugowania, a wygląda to tak:

I/Web Console: Event triggered: device.ready:1 

Logging na ekranie również działa, ale w tempie około 100 linii na sekundę. Próbowałem co najmniej następujących filtrów wyjściowych:

adb logcat -s "Web Console" 
adb logcat "Web Console":V 
adb logcat "Web Console":* 
adb logcat -s Web 
adb logcat Web:V 
adb logcat "myApp":V 
adb logcat myApp:V 
adb logcat -s myApp 

... i prawdopodobnie inni już zapomniałem. Albo nie drukują absolutnie niczego, albo absolutnie wszystkiego, od usług systemowych.

Jestem w systemie Windows, więc nie mogę grep, a urządzenie, na którym debuguję, działa pod kontrolą systemu Android 4.2.2, więc nie mogę używać GapDebug, a także nie jest możliwe uzyskanie dostępu do urządzenia zaloguj się przez chrome://inspect w przeglądarce Chrome.

Naprawdę, naprawdę chciałbym zrozumieć, jak działa filtrowanie danych wyjściowych logcat. Nie chcę rejestrować wszystkiego w pliku, a potem przejść przez to.

+1

'adb logcat -s" Web Console ": *' ... Zalecam, aby nie używać spacji w nazwie znacznika, ale –

+0

@AlexP. nie, wciąż nada. Tag jest zdefiniowany przez Cordovę i nie mam pojęcia, jak to zmienić. Kiedyś to było CordovaLog i jak powiedziałem, wszystko działało pięknie. Informacje o zmianie nazwy tagu nie istnieją w dokumentach lub moje Google Fu zawodzi mnie nieszczęśliwie. – Schlaus

+1

'shell adb" logcat -s 'Web Console': * "' –

Odpowiedz

15

Wygląda na to, że logcat nie może poprawnie przeanalizować nazw znaczników za pomocą białych znaków. Więc zamiast Proponuję za pomocą grep na urządzeniu:

adb shell "logcat | grep 'Web Console'" 
+0

niewiarygodne, nie mam słów ... – Alex

+0

zapisane dużo bólu głowy – lk404

+0

Po prostu wpisuję 'adb logcat | grep app = mi' – deFreitas

5

Alternatywnie gdy runiczny adb w systemie Linux lub UNIX OS/git bash:

adb logcat | grep 'Web Console' 
1

Chociaż można użyć grep pod Linux/Unix, findstr potędze być twoim wyborem pod Windows:

adb logcat | findstr /C:"Web Console" 

Jeśli wolisz używać grep pod Windows, można je dostać od http://gnuwin32.sourceforge.net/packages/grep.htm.

+0

zaakceptowana odpowiedź działa tak samo we wszystkich 3 obsługiwane systemy operacyjne.nie ma potrzeby rozwiązania tylko okna –

+0

Masz absolutną rację (grep działa na wszystkich głównych systemach operacyjnych) - Postartuję tę odpowiedź a) w celu skierowania do użytkowników, którzy nie są zbyt zaznajomieni z narzędziami GNU, b) wzięcia pod uwagę faktu, że użytkownik stwierdził "I "m na Windowsie, więc nie mogę grep" i c) udostępnić link do grep (jeszcze raz, aby skierować reklamy do użytkowników, którzy głównie pracują pod Windowsem i może nawet nie znać grep) – ingenuine

+1

brakuje ci punktu, który w zaakceptowanej odpowiedzi 'grep' działa na samym urządzeniu. więc nie ma znaczenia, czy 'grep' jest dostępny w systemie hosta PC –