Czy istnieje sposób na przechwycenie wyjścia NSLog na iPhonie, gdy nie jest podłączony do debuggera?
Rejestruję kilka danych za pomocą NSLog()
. Czy istnieje sposób na przechwycenie danych dziennika, gdy mój iPhone nie jest podłączony do mojej maszyny programistycznej i działa pod debugerem?
Na przykład, Czy Mogę przekierować go do pliku, a następnie odczytać plik dziennika z powrotem przez Xcode w późniejszym czasie? Muszę to zrobić, aby przetestować moją aplikację, gdy WiFi jest słabe, co wymaga, że idę daleko od mojego biurka.
4 answers
Jestem prawie pewien, że połączenia NSLog() zostaną zapisane w dzienniku konsoli systemowej, więc jeśli podłączysz iPhone ' a do komputera po tym, jak będziesz offline, powinieneś być w stanie spojrzeć na log konsoli w Xcode Organizer. Jedynym zastrzeżeniem jest to, że dziennik konsoli ma ograniczony rozmiar, więc starsze wpisy mogą zostać odrzucone, jeśli zrobisz dużo logowania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-09 19:09:55
Poniższa metoda utworzy nazwę pliku " console.log " w folderze Dokumenty aplikacji, dzięki czemu można go później przeczytać.
Wywołaj tę metodę na początku programu:
- (void) redirectConsoleLogToDocumentFolder
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *logPath = [documentsDirectory stringByAppendingPathComponent:@"console.log"];
freopen([logPath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr);
}
Dziennik nigdy nie zostanie usunięty, więc używaj ostrożnie.
Po przetestowaniu aplikacji w terenie, podłącz ponownie telefon do komputera Mac, w Xcode, otwórz Organizer. W panelu Podsumowanie znajduje się lista wszystkich aplikacji w telefonie. Rozwiń ten, który debugujesz, a będziesz zobacz pakiet o nazwie "Dane aplikacji".
Kliknij strzałkę po prawej stronie nazwy i zapisz to. Na końcu pojawi się folder z nazwą identyfikatora pakietu i datą.
Wewnątrz tego folderu znajdziesz Folder Dokumenty, który powinien zawierać konsolę.log
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-22 15:09:50
W App Store znajduje się również aplikacja Console, ale działa tylko na iOS 6 i wcześniejsze.
Kiedy pojawił się iOS 7, przestał działać. (Może teraz odczytywać tylko własne dzienniki konsoli, a nie cały system.)Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:28
Marek Nowakowski ma rację. Wyjście konsoli jest rejestrowane w telefonie, a po podłączeniu komputera Mac do telefonu wyjście konsoli jest dostępne w oknie organizer.
Po prostu wybierz swój telefon w panelu urządzenia i wybierz kartę konsola. Najnowsze wyjście konsoli będzie tam. Bardzo fajne.
Właśnie to rozgryzłem. To będzie bardzo pomocne w sytuacjach, takich jak opisujesz, gdzie musisz być z dala od komputera.
BTW, mam rozwiązanie aby przetestować słabe sygnały WiFi. Wystarczy owinąć telefon folią aluminiową, a Kabel USB wystaje z folii. Jeśli używasz go na uwięzi, możesz przejść przez KOD w debugerze. Nie możesz manipulować interfejsem użytkownika, ale możesz degradować / eliminować sygnały radiowe, takie jak 3D, WiFi i GPS. Jeśli chcesz obniżyć siłę sygnału, ale nie anulować go całkowicie, być może będziesz musiał eksperymentować z częściowym zakryciem telefonu folią, wkładając małe otwory pokrycie itp.
Jedna uwaga: NIE zostawiaj telefonu zawiniętego w folię dłużej niż kilka minut na raz. Prawdopodobnie się przegrzeje.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-14 01:58:09