Jak dekodować Dziennik awarii za pomocą pliku dSYM w systemie iOS?
Moja aplikacja iOS zawiesiła się. Chciałbym przeczytać dziennik awarii z plikiem dSYM. Jak to możliwe?
3 answers
Po pierwsze, potrzebujesz trzech plików: Pliku dSYM, pliku aplikacji i dziennika awarii.
Otwórz Kod X, w Nawigatorze projektu ujawnij folder produkty i "pokaż w Finderze" plik aplikacji. Tutaj też znajdziesz plik dSYM. Skopiuj je do folderu.
Teraz otwórz terminal i przejdź do folderu, który wcześniej skopiowałeś dwa pliki. Run: dwarfdump --uuid Application_name.app/Application_name
Powinieneś otrzymać UUID aplikacji.
Uruchom następujące polecenie: dwarfdump --uuid Application_name.app.dSYM
- ponownie otrzymasz UUID, które powinny odpowiadać wcześniej otrzymanemu UUID.
Otwórz dziennik awarii (X Code-Organizer-crashes) i znajdź linię, w której pojawia się Tytuł "Binary images". Oto kolejny UUID w pierwszej linii, który powinien ponownie pasować do wcześniej otrzymanego w terminalu.
Teraz masz pewność, że awaria została zalogowana w kompilacji, którą badasz, więc otwórz ponownie plik dziennika awarii, znajdź sekcję wątku 0 i powinny być dwie linie z nazwą Twojej aplikacji i dwoma adresy. Np.:
Application_name 0x123456
Application_name 0x987654
W terminalu powinieneś uruchomić teraz: atos -arch armv7 -o address1 address2
(adres1 i adres2 powinny być zastąpione dwoma poprzednimi adresami, a armv7 z Twoim systemem-jest pokazane w liniach, gdzie masz uuid).
Miłego debugowania!
EDIT: chciałbym wspomnieć ten post jako moją bazę.
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
2012-11-16 14:14:22
W rzeczywistości nie można dekodować pliku dSYM, ale uzyskać z niego szczegóły błędu
1. znajdź wątek awarii i adres z pliku dziennika: poniżej jest 0x0nnn
2. znajdź natywny Typ kodu z pliku dziennika: following is arm64
3. znajdź plik DSYM (plik symboli),wyodrębnij z .xcarchive: poniżej znajduje się xx. app.dSYM
dwarfdump --lookup 0x0nnn --arch=[arm64 armv6 armv7] xx.app.dSYM
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
2015-05-28 05:19:02
Inspiracja
Kroki, aby uzyskać plik dsym
- Tworzenie aplikacji na iOS dla archiwum
- Wyodrębnij MyApp.xcarchive
- w tym Pliku znajdziesz plik dSYM.
Pobierz dziennik awarii urządzenia
Ciągnij .crash file off a device. Normalnie używam xCode za to.
Metoda Line-by-line
atos -arch arm64 -o TheElements.app.dSYM/Contents/Resources/DWARF/TheElements -l 0x1000e4000 0x00000001000effdc
0x1000e4000 = address of your app's image
0x00000001000effdc = is the stripped name of the symbol you want to turn into a readable name
Metoda Pro
Get the location of symbolicatecrash
executable.
W xCode 9, plik, który chcesz jest tutaj:
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
Wydrukuj symbol crash log do terminala
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"
./symbolicatecrash -v crash_log_20_9_2018.crash myapp.app.dSYM
Czytanie
Ładne instrukcje dla atos
tutaj:
jak symbolizować crash log Xcode?
Sposób wykonania tego samego Bez pliku dsym proszę.: https://medium.com/@Mrugraj/crash-re-symbolication-5c28d3a3a883
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
2018-09-20 16:32:27