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?

Author: Ashok Kumar S, 2012-08-09

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ę.

 34
Author: MMMM,
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
 1
Author: BollMose,
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

Https://developer.apple.com/library/archive/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-SYMBOLICATEWITHXCODE

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

 0
Author: rustyMagnet,
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