Czy są jakieś dzienniki awarii generowane przez iPhone Simulator?
Symulator dużo się zawiesza, ale nie pozostawia żadnych śladów w Konsoli ... Dziennik awarii będzie przydatny.
iphone
ios-simulator
crash-reports
Raptor
źródło
źródło
Odpowiedzi:
Konsola pokaże dane
NSLog()
wyjściowe z aplikacji uruchomionej w symulatorze. Dzienniki awarii są zapisywane w pliku.Znalazłem kilka w moim katalogu domowym pod
~/Library/Logs/DiagnosticReports/
Mają rozszerzenie pliku
.crash
Coś, czego jeszcze nie odkryłem, to jak zmusić je do wygenerowania, nawet jeśli debugger przechwyci
EXC_BAD_ACCESS
sygnał.Aktualizacja
Obecnie (OSX 10.11.6) .crash loguje się
~/Library/Logs/DiagnosticReports
, gdy sam emulator ulega awarii . Dzienniki awarii aplikacji (ale urządzenie emulatora nadal działa poprawnie) znajdują się w:W przypadku każdej awarii istnieje podfolder z unikalnym identyfikatorem. Sortuj według daty, tak aby ostatnia awaria była pierwszym podfolderem. Wewnątrz zacznij od spojrzenia na
stderr.log
isystem.log
.Również bezpośrednio pod
CoreSimulator
, patrzCoreSimulator.log
iSimulator.log
.źródło
~/Library/Logs/DiagnosticReports/
Jestem prawie pewien, że widać to w aplikacji OS X Console znajdującej się w Utilities. Jeśli się mylę, pamiętaj, aby zagłosować na mnie, więc usunę to.
AKTUALIZACJA:
W szczególności (od OSX 10.11.6),
Kiedy aplikacja ulega awarii na emulatorze, podfolder (z unikalnym identyfikatorem) jest dodawany do:
W ramach tego zacznij od zbadania
stderr.log
isystem.log
.Kiedy sam emulator ulega awarii, podfolder jest dodawany do:
Nie myl tej ścieżki z
(brak
~
na początku), który zawiera różne raporty na temat twojego komputera Mac.źródło
Oto coś, co zadziałało w moim przypadku w szczególnym przypadku ... Moja aplikacja ulegała awarii z SIGKILL podczas zamykania. Widziałbym wyjątek w main.m przez kilka sekund, a następnie aplikacja kończyłaby pracę - w ten sposób nie ma szans na uzyskanie wstecznego śledzenia.
Dużo szukałem informacji „gdzie symulator przechowuje swoje dzienniki awarii” i nigdy nie udało mi się znaleźć odpowiedzi. Jednak następująca sztuczka okazała się całkiem przydatna i mogłem pobrać dziennik awarii w locie:
Zasadniczo otwórz /Applications/Utilities/CrashReporterPrefs.app i zmień ustawienie na „Developer”. Spowoduje to, że CrashReporter wyświetli wyskakujące okienko z dziennikiem awarii po awarii aplikacji.
Znalazłem to w sekcji „Wyświetlanie konsoli symulatora iOS i dzienników awarii” w tym dokumencie firmy Apple: http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/ios_development_workflow/125-Using_iOS_Simulator/ios_simulator_application. html
źródło
Jest to znacznie bardziej niezawodne. W zaledwie kilku krokach udało mi się znaleźć numer linii źródłowej i nazwę metody:
źródło
Dzienniki awarii pojawią się w ~ / Library / Logs / CrashReporter.
Gdy Xcode pobiera dzienniki awarii z podłączonego urządzenia, przechowuje je w podfolderach ~ / Library / Logs / CrashReporter / MobileDevice
źródło
Dla mnie było to wyrażenie, które dodałem do okna obserwacyjnego debugera. Kiedy punkt przerwania był trafiony, złe wyrażenie powodowało segfault XCode.
źródło