Symboliczne raporty o awariach aplikacji iPhone

Chcę spróbować przedstawić raporty o awariach mojej aplikacji na iPhone ' a.

Odzyskałem raporty o awariach z iTunes Connect. Mam binarny program, który przesłałem do App Store i mam plik DSYM, który został wygenerowany jako część kompilacji.

Mam wszystkie te pliki razem w jednym katalogu, który jest indeksowany przez spotlight.

Co teraz?

Próbowałem wywołać:

symbolicatecrash crashreport.crash myApp.app.dSYM

I wyświetla ten sam tekst, który jest w wypadku zgłoś się na początek, a nie symbolicznie.

Czy robię coś nie tak?
Author: ROMANIA_engineer, 2009-09-22

24 answers

[[4]}kroki analizy raportu awarii od apple:

  1. Skopiuj wydanie .plik aplikacji, który został wypchnięty do appstore, the. plik DSYM, który został utworzony w momencie wydania i raport o awarii otrzymuje od APPLE do folderu .

  2. Otwórz aplikację terminal i przejdź do folderu utworzonego powyżej (za pomocą polecenia cd)

  3. Run atos -arch armv7 -o APPNAME.app/APPNAME MEMORY_LOCATION_OF_CRASH. Lokalizacja pamięci powinna być tym, w którym aplikacja zawiesiła się zgodnie z raportem.

Ex: atos -arch armv7 -o 'APPNAME.app'/'APPNAME' 0x0003b508

To pokazuje dokładną linię, nazwę metody, która doprowadziła do awarii.

Ex: [classname functionName:]; -510

Symbol IPA

Jeśli używamy IPA do symboliki-po prostu zmień nazwę rozszerzenia .ipa z .zip, rozpakować go wtedy możemy uzyskać folder Payload, który zawiera aplikację. W tym przypadku nie potrzebujemy .plik dSYM.

Uwaga

To może działać tylko wtedy, gdy aplikacja binarna nie ma pozbawionych symboli. Domyślnie release builds usuwa symbole. Możemy to zmienić w Ustawieniach budowania projektu "Strip Debug Symbols During Copy" NA NO.

Więcej szczegółów zobacz ten post

 686
Author: Naveen Shan,
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 11:47:21

Po przeczytaniu tych wszystkich odpowiedzi tutaj w celu symbolicznego dziennika awarii (i wreszcie sukces) myślę, że są pewne punkty brakuje tutaj, które są naprawdę ważne, aby ustalić, dlaczego wywołanie symbolicatecrash nie produkuje symbolicznego wyjścia.

Istnieją 3 aktywa, które muszą pasować do siebie, gdy symbol dziennika awarii:]}
  1. sam plik dziennika awarii (tj. example.crash), wyeksportowany z organizera XCode lub otrzymany z iTunes Połącz się.
  2. pakiet .app (tj. example.app), który sam zawiera plik binarny aplikacji należący do dziennika awarii. Jeśli masz pakiet .ipa (np. example.ipa), możesz rozpakować pakiet .app, rozpakowując pakiet .ipa (np. unzip example.ipa). Następnie pakiet .app znajduje się w wyodrębnionym folderze Payload/.
  3. pakiet .dSYM zawierający symbole debugowania (tj. example.app.dSYM)

Przed rozpoczęciem symboliki należy sprawdzić, czy wszystkie te artefakty pasują, które oznacza to, że dziennik awarii należy do posiadanego przez Ciebie pliku binarnego i że symbole debugowania są symbolami wytworzonymi podczas budowania tego pliku binarnego.

Każdy plik binarny jest określany przez UUID, który można zobaczyć w pliku dziennika awarii:
...
Binary Images:
0xe1000 -    0x1f0fff +example armv7  <aa5e633efda8346cab92b01320043dc3> /var/mobile/Applications/9FB5D11F-42C0-42CA-A336-4B99FF97708F/example.app/example
0x2febf000 - 0x2fedffff  dyld armv7s  <4047d926f58e36b98da92ab7a93a8aaf> /usr/lib/dyld
...

W tym wyciągu dziennik awarii należy do binarnego obrazu aplikacji o nazwie example.aplikacja / przykład z UUID aa5e633efda8346cab92b01320043dc3.

Możesz sprawdzić UUID pakietu binarnego z dwarfdump:

dwarfdump --uuid example.app/example
UUID: AA5E633E-FDA8-346C-AB92-B01320043DC3 (armv7) example.app/example

Następnie należy sprawdzić, czy debugowanie symbole, które masz również należą do tego binarnego:

dwarfdump --uuid example.app.dSYM
UUID: AA5E633E-FDA8-346C-AB92-B01320043DC3 (armv7) example.app.dSYM/Contents/Resources/DWARF/example

W tym przykładzie wszystkie zasoby pasują do siebie i powinieneś być w stanie symbolizować swoją stacktrace.

Przejście do skryptusymbolicatecrash:

W Xcode 8.3 powinieneś być w stanie wywołać skrypt poprzez

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash -v example.crash 2> symbolicate.log
Jeśli go nie ma, możesz uruchomić find . -name symbolicatecrash w swoim Xcode.katalog aplikacji, aby go znaleźć.

Jak widać nie podano więcej parametrów. Skrypt musi więc znaleźć binarną aplikację i Debuguj symbole, uruchamiając wyszukiwanie spotlight. Przeszukuje symbole debugowania za pomocą określonego indeksu o nazwie com_apple_xcode_dsym_uuids. Możesz zrobić to wyszukiwanie samodzielnie:

mdfind 'com_apple_xcode_dsym_uuids = *'

Resp.

mdfind "com_apple_xcode_dsym_uuids == AA5E633E-FDA8-346C-AB92-B01320043DC3"

Pierwsze wywołanie spotlight daje wszystkie zindeksowane Pakiety dSYM, a drugie daje .dSYM pakiety z określonym UUID. Jeśli spotlight nie znajdzie pakietu .dSYM, to symbolicatecrash również nie znajdzie. Jeśli robisz to wszystko np. w podfolderze twojego ~/Desktop spotlight powinien być w stanie znaleźć wszystko.

Jeśli symbolicatecrash znajdzie twój .dSYM pakiet powinien być taki wiersz w symbolicate.log:

@dsym_paths = ( <SOME_PATH>/example.app.dSYM/Contents/Resources/DWARF/example )

Aby znaleźć twój .app pakiet, wyszukiwanie spotlight jest wywoływane przez symbolicatecrash:

mdfind "kMDItemContentType == com.apple.application-bundle && (kMDItemAlternateNames == 'example.app' || kMDItemDisplayName == 'example' || kMDItemDisplayName == 'example.app')"

Jeśli symbolicatecrash znajdzie Twój .app pakiet, w symbolicate.log powinien być następujący Wyciąg:

Number of symbols in <SOME_PATH>/example.app/example: 2209 + 19675 = 21884
Found executable <SOME_PATH>/example.app/example
-- MATCH

Jeśli wszystkie te zasoby zostaną znalezione przez symbolicatecrash, powinien on wydrukować symboliczną wersję Twojego dziennika awarii.

Jeśli nie możesz przejść w Twój dSYM i .pliki aplikacji bezpośrednio.

symbolicatecrash -v --dsym <SOME_PATH>/<App_URI>.app.dSYM/<APP_NAME>.app.dsym <CRASHFILE> <SOME_OTHER_PATH>/<APP_NAME>.app/<APP_NAME> > symbolicate.log

Uwaga: symboliczny backtrace będzie wyprowadzany do terminala, a nie symbolicate.log.

 162
Author: Andreas Klöber,
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-10-22 19:13:27

Z najnowszą wersją Xcode (3.2.2), można przeciągać i upuszczać wszelkie raporty o awariach do sekcji dzienniki urządzenia Xcode organizer i będą one automatycznie symbolicated dla Ciebie. Myślę, że to działa najlepiej, jeśli zbudowałeś tę wersję aplikacji za pomocą Build & Archive (również część Xcode 3.2.2)

 114
Author: Alan Rogers,
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
2010-04-20 06:33:46

Udało mi się, teraz chcę podzielić się z wami wszystkimi.

Są to następujące kroki:

Krok 1: Utwórz folder na pulpicie, nadaję mu nazwę "CrashReport" i umieszczam trzy pliki ("MYApp.app", " MyApp.app.dSYM", " MYApp_2013-07-18.crash") w nim.

Krok 2: otwórz Finder i przejdź do aplikacji, gdzie znajdziesz aplikację Xcode, kliknij prawym przyciskiem myszy na to i kliknij "Pokaż Zawartość pakietu", następnie wykonaj to proste ścieżka

" spis treści - > programista - > Platformy - > iPhoneOS.Platforma - > programista->Biblioteka->PrivateFrameworks - > DTDeviceKit.framework ->Versions - > A - > Resources "

LUB

" spis treści - > programista - > Platformy - > iPhoneOS.Platforma - > programista->Biblioteka->PrivateFrameworks - > DTDeviceKitBase.framework ->Versions - > A - > Resources "

LUB

Dla Xcode 6 i powyżej ścieżki na Aplikacje / Xcode.app / Contents/SharedFrameworks / DTDeviceKitBase.framework/Versions/A / Resources

Gdzie znajdziesz plik "symbolicatecrash", skopiuj go i wklej do folderu "CrashReport".

Krok 3: Uruchom terminal, Uruchom te 3 polecenia

  1. Cd / Users / mac38 / Desktop / CrashReport i naciśnij przycisk Enter

  2. Export DEVELOPER_DIR=" / Applications / Xcode.app/Contents / Developer" i naciśnij Enter

  3. ./ symbolicatecrash - A-v MYApp_2013-07-18.crash MyApp.app.dSYM i naciśnij Enter teraz jest gotowe.. (Uwaga: wersje około 6.4 lub nowsze nie mają opcji-A-po prostu ją pomiń)

Szczęśliwe Kodowanie.. Dzięki

 72
Author: SachinVsSachin,
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-04-18 02:35:12

Używam Airbrake w moich aplikacjach, co robi dość dobrą robotę zdalnego rejestrowania błędów.

Oto jak je symbolizuję z Atosem, jeśli backtrace tego potrzebuje:

  1. W Xcode (4.2) przejdź do organizera, kliknij prawym przyciskiem myszy na archiwum z które ... wygenerowano plik ipa.

  2. In Terminal, cd do xcarchive na przykład MyCoolApp 10-27-11 1.30 PM.xcarchive

  3. Wpisz następujący atos -arch armv7 -o 'MyCoolApp.app'/'MyCoolApp' (nie zapomnij o pojedynczych cytatach)

  4. I nie włączaj mojego symbolu w tym telefonie. To, co dostajesz, to kursor blokowy na pustej linii.

  5. Następnie kopiuję / wklejam mój kod symbolu na kursor bloku i naciskam wejść. Zobaczysz coś w stylu:

    -[MyCoolVC dealloc] (in MyCoolApp) (MyCoolVC.m:34)

  6. Wracasz do kursora blokowego i możesz wkleić inne symbole.

Możliwość przeszukiwania jednego elementu bez ponownego wpisywania pierwszego bitu to miła oszczędność czasu.

Smacznego!
 28
Author: averydev,
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
2011-10-27 21:06:05

Przed uruchomieniem symbolate crash umieszczam również dsym, app bundle i crash log w tym samym katalogu]}

Następnie używam tej funkcji zdefiniowanej w moim .profil w celu uproszczenia pracy symbolicatecrash:

function desym
{
    /Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash -A -v $1 | more
}

Argumenty tam dodane mogą Ci pomóc.

Możesz sprawdzić, czy spotlight "widzi" Twoje pliki dysm, uruchamiając komendę:

mdfind 'com_apple_xcode_dsym_uuids = *'

Poszukaj dsym, który masz w katalogu.

Uwaga: Od najnowszego Xcode, nie ma już Katalog programistów. Możesz znaleźć to narzędzie tutaj:

/Aplikacje / Xcode.app / Contents/SharedFrameworks / DTDeviceKitBase.framework/Versions/A/Resources / symbolicatecrash

 28
Author: Kendall Helmstetter Gelner,
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-09-17 15:08:36

Kroki do symbolicznego raportu o awarii automatycznie za pomocą XCode:

AKTUALIZACJA DLA XCODE 9

  1. Połącz dowolne urządzenie iOS do komputera Mac (tak fizyczny, tak Wiem, że to głupie)

  2. Wybierz "Urządzenia" z menu "Okno" Tutaj wpisz opis obrazka

  3. Kliknij urządzenie po lewej stronie i Wyświetl dzienniki urządzenia po prawej stronie Tutaj wpisz opis obrazka

  4. Czekaj. Pojawienie się może zająć chwilę. Może Robienie Command-A wtedy Delete przyspieszy to.

  5. krok krytyczny: Zmień nazwę raportu awarii otrzymanego z iTunesConnect z rozszerzenia .txt na rozszerzenie .crash

  6. Przeciągnij raport o awarii w obszar po lewej stronie Tutaj wpisz opis obrazka

A następnie Xcode symbolizuje raport awarii i wyświetla wyniki.

Źródło: https://developer.apple.com/library/ios/technotes/tn2151/_index.html

 22
Author: William Entriken,
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-01-07 22:33:28

Tylko prosta i zaktualizowana odpowiedź dla xcode 6.1.1 .

Kroki

1.Xcode > Window>Devices.

2.Wybierz urządzenie z listy urządzeń w sekcji Urządzenia.

3.Wybierz Opcję Wyświetl Dzienniki Urządzeń.

4.W sekcji Wszystkie dzienniki możesz bezpośrednio przeciągnąć raport.crash

5.Xcode automatycznie symbolizuje raport o awarii dla Ciebie.

6.Możesz znaleźć symboliczny raport o awarii, dopasowując jego datę/godzinę do daty / godziny wymienionej w Twój raport o wypadku.

 20
Author: Aditya Aggarwal,
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-02-02 14:54:58

Mimo że od kilku lat tworzyłem aplikacje, to był to mój pierwszy raz debugowanie binarne i czułem się jak kompletny NOOB zastanawiający się, gdzie są wszystkie pliki, tzn. gdzie jest *.aplikacja*.DSYM i crash logs? Musiałem przeczytać wiele postów, aby to rozgryźć. Obraz jest wart tysiąca słów i mam nadzieję, że ten post pomoże innym w przyszłości.

1 - Najpierw przejdź do itunesconnect i pobierz dzienniki awarii. Uwaga: w większości przypadków możesz uzyskać coś w stylu "zbyt mało raportów zostały złożone do przedstawienia sprawozdania."Zasadniczo za mało użytkowników przesłało raporty dziennika awarii do Apple, w którym to przypadku nie można zrobić wiele z niczego w tym momencie.

Tutaj wpisz opis obrazka

Tutaj wpisz opis obrazka

2-Teraz jeśli nie zmieniłeś kodu od czasu przesłania go binarnego do Apple, Uruchom Xcode dla tego projektu i wykonaj ponownie Product -- > Archive. W przeciwnym razie po prostu znajdź swój najnowszy przesłany plik binarny i kliknij prawym przyciskiem myszy na to.

Tutaj wpisz opis obrazka

Tutaj wpisz opis obrazka

Tutaj wpisz opis obrazka

Tutaj wpisz opis obrazka

 14
Author: Sam B,
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
2014-07-07 13:40:53

Używając XCode 4, zadanie jest jeszcze prostsze:

  • open Organizer,
  • Kliknij na Library / Device Log w lewej kolumnie
  • Kliknij przycisk "Importuj" u dołu ekranu ...

I voila. Plik dziennika jest importowany i symbolizowany automatycznie dla Ciebie. Pod warunkiem zarchiwizowania kompilacji za pomocą XCode -> Product - > Archive first

 8
Author: Sébastien Stormacq,
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
2011-06-14 18:21:53

W XCode 4.2.1 otwórz Organizer, a następnie przejdź do biblioteki / dzienników urządzeń i przeciągnij swój .plik awarii do listy dzienników awarii. To będzie symbolizowane dla ciebie po kilku sekundach. Zauważ, że musisz użyć tej samej instancji XCode, na której została zarchiwizowana oryginalna kompilacja (np. archiwum dla Twojej kompilacji musi istnieć w organizerze).

 8
Author: cberkley,
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-01-27 17:52:08

Magiczny Organizer XCode nie jest magiczny w symbolice mojej aplikacji. Nie mam żadnych symboli dla raportów o awariach, które otrzymałem od Apple z nieudanego przesłania aplikacji.

Próbowałem użyć wiersza poleceń, umieszczając raport awarii w tym samym folderze co.plik aplikacji (który przesłałem do sklepu) oraz .plik dSYM:

$ symbolicatecrash "My App_date_blahblah-iPhone.crash" "My App.app"

To tylko symbole dla mojej aplikacji, a nie kod core foundation, ale było lepsze niż zrzut numerów, który daje mi Organizator i wystarczyło mi znaleźć i naprawić awarię, którą miała moja aplikacja. Jeśli ktoś wie, jak to rozszerzyć, aby uzyskać Symbole Fundacji, byłoby to mile widziane.

 7
Author: AndrewS,
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
2010-10-12 15:06:19

W moim przypadku przeciągałem raporty o awariach bezpośrednio z poczty do Organizatora. Z jakiegoś powodu uniemożliwiło to symboliczne zgłoszenie awarii (chciałbym wiedzieć dlaczego).

Skopiowanie raportów o awariach na pulpit, a następnie przeciągnięcie ich stamtąd do organizera sprawiło, że zostały odpowiednio oznaczone.

Bardzo konkretny przypadek, wiem. Ale pomyślałem, że się podzielę na wszelki wypadek.

 6
Author: samvermette,
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
2011-04-05 03:10:19

Oto kolejny problem, który mam z symbolicatecrash – nie będzie działać z aplikacjami, które mają spacje w pakiecie (np. ' Test App.app"). Uwaga nie wydaje mi się, aby można było mieć spacje w ich nazwie przy zgłaszaniu, więc i tak powinieneś je usunąć, ale jeśli masz już crashy, które wymagają analizy, patch symbolicatecrash (4.3 GM) jako taki:

240c240
<         my $cmd = "mdfind \"kMDItemContentType == com.apple.application-bundle && kMDItemFSName == $exec_name.app\"";
---
>         my $cmd = "mdfind \"kMDItemContentType == com.apple.application-bundle && kMDItemFSName == '$exec_name.app'\"";
251c251
<             my $cmd = "find \"$archive_path/Products\" -name $exec_name.app";
---
>             my $cmd = "find \"$archive_path/Products\" -name \"$exec_name.app\"";
 4
Author: Alastair Stuart,
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
2011-03-07 13:02:28

Dla tych, którzy używają Airbrake ' a, powyżej jest solidna odpowiedź, ale nie zadziałałoby to dla mnie bez podkręcania:

Działa dla niektórych adresów pamięci, ale nie dla innych, Nie wiem dlaczego...

  • Utwórz nowy katalog na pulpicie lub gdziekolwiek
  • Znajdź dane archiwum w Xcode organizer
  • podwójne dotknięcie, aby odsłonić w Finderze
  • Naciśnij dwukrotnie, aby wyświetlić zawartość pakietu
  • Zrozumiałem .plik dSYM i .plik aplikacji do nowego katalogu
  • cd do nowego katalogu
  • Uruchom polecenie: atos-arch armv7-o ' Vimeo.Aplikacja " / "Vimeo"
  • Terminal wprowadzi interaktywny ruch
  • Wklej w adres pamięci i naciśnij enter, wyświetli nazwę Metody i numer linii
  • alternatywnie wpisz polecenie: atos-arch armv7-o ' Vimeo.Aplikacja " / "Vimeo" Aby uzyskać informacje tylko dla jednego adresu
 4
Author: Alfie Hanssen,
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-01-10 20:59:07

Kombinacja, która zadziałała dla mnie to:

  1. Skopiuj plik dSYM do katalogu, w którym był raport awarii
  2. rozpakuj plik ipa zawierający aplikację ('rozpakuj MyApp.ipa")
  3. Skopiuj plik binarny aplikacji z eksplodowanego ładunku do tego samego folderu, co raport o awarii i plik symboli (coś w stylu " MyApp.app / MyApp")
  4. Importuj lub ponownie symbol raportu awarii z organizera XCode

Używając atos nie byłem w stanie aby rozwiązać prawidłowe informacje o symbolu za pomocą adresów i przesunięć, które były w raporcie awarii. Kiedy to zrobiłem, widzę coś bardziej znaczącego i wydaje się to być legalnym śladem stosu.

 4
Author: Sean Aitken,
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-02 15:50:55

Musiałem sporo hakować skrypt symbolicatecrash, żeby działał poprawnie.

Z tego co wiem, symbolicatecrash wymaga teraz ... aplikacja, aby być w tym samym katalogu, co.dsym. Użyje .dsym do zlokalizowania .aplikacja, ale nie będzie używać dsym, aby znaleźć symbole.

Powinieneś zrobić kopię swojego symbolcatecrash przed przystąpieniem do tych łatek, które sprawią, że będzie wyglądał w dsym:

Wokół linii 212 w getSymbolPathFor_dsymUuid function

212     my @executablePath = grep { -e && ! -d } glob("$dsymdir" . "/Contents/Resources/DWARF/" . $executable);

Wokół linii 265 w funkcji matchesUUID

265             return 1;
 3
Author: JerryH,
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
2010-01-26 19:43:59

Jest to proste, po przeszukaniu dużo znalazłem jasne kroki, aby symbolizować cały plik dziennika awarii.

    Zrozumiałem .pliki app, crash_report i DSYM w folderze.
  • podłącz urządzenie za pomocą xcode
  • Następnie przejdź do okna - > wybierz Urządzenia - > wyświetl logi urządzeń
  • Następnie wybierz to urządzenie, Usuń wszystkie logi .
  • przeciągnij i upuść awarię w sekcji dziennika urządzeń . automatycznie symbolizuje awarię . wystarczy kliknąć prawym przyciskiem myszy na raport i wyeksportować go .

Happy coding,
Riyaz

 1
Author: Shaik Riyaz,
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-02-17 04:52:19

Wolę skrypt który będzie symbolizował wszystkie moje dzienniki awarii.

Warunki wstępne

Stwórz folder i umieść tam 4 rzeczy:

  1. symbolicatecrash skrypt Perla - jest wiele odpowiedzi, które mówią o jego lokalizacji

  2. Archiwum kompilacji, które pasują do awarii (z Xcode Organizer. simple as Show in Finder and copy) [Nie wiem czy to konieczne]

  3. Wszystkie xccrashpoint pakiety - (z Xcode Organizer. Show in Finder, możesz kopiować wszystkie pakiety w katalogu, lub pojedynczy xccrashpoint, który chcesz symbolizować)

  4. Dodaj ten krótki skrypt do katalogu:

    #!/bin/sh
    
    echo "cleaning old crashes from directory"
    rm -P *.crash
    rm -P *.xccrashpoint
    rm -r allCrashes
    echo "removed!"
    echo ""
    echo "--- START ---"
    echo ""
    
    mkdir allCrashes
    mkdir symboledCrashes
    find `ls -d *.xccrashpoint` -name "*.crash" -print -exec cp {} allCrashes/ \;
    
    cd allCrashes
    for crash in *.crash; do
        ../symbolicatecrash $crash > ../symboledCrashes/V$crash
    done
    cd ..
    
    echo ""
    echo "--- DONE ---"
    echo ""
    

Skrypt

Po uruchomieniu skryptu otrzymasz 2 katalogi.

  1. allCrashes - wszystkie awarie ze wszystkich xccrashpoint będą tam.

  2. symboledCrashes - te same awarie, ale teraz ze wszystkimi symbolami.

  3. Nie musisz czyścić katalogu ze starego zawiesza się przed uruchomieniem skryptu. wyczyści się automatycznie. powodzenia!

 1
Author: Yitzchak,
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-07 14:37:27

Aby symbolicznie określić awarie, Spotlight musi być w stanie znaleźćplik DSYM, który został wygenerowany w tym samym czasie, co plik binarny przesłany do Apple. Ponieważ zawiera informacje o symbolu, nie będziesz miał szczęścia, jeśli nie będzie dostępna.

 0
Author: rpetrich,
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-09-22 20:51:11

Trochę się zrzędziłem tym, że nic tutaj nie wydaje się "po prostu działać", więc przeprowadziłem pewne śledztwo i wynik jest taki:

Skonfiguruj: quincykit back end, który odbiera raporty. Nie ustawiono symboliki, ponieważ nie mogłem nawet zacząć rozgryźć, co sugerują, żebym zrobił, aby to działało.

Poprawka: pobieranie raportów o awariach z serwera online. Nazywają się "crash" i domyślnie wchodzą do folderu ~/Downloads/. Mając to na uwadze, ten skrypt "zrobi to, co należy" i raporty o awariach trafią do Xcode (Organizer, dzienniki urządzeń) i zostanie wykonana symbolika.

Scenariusz:

#!/bin/bash
# Copy crash reports so that they appear in device logs in Organizer in Xcode

if [ ! -e ~/Downloads/crash ]; then 
   echo "Download a crash report and save it as $HOME/Downloads/crash before running this script."
   exit 1
fi

cd ~/Library/Logs/CrashReporter/MobileDevice/
mkdir -p actx # add crash report to xcode abbreviated
cd actx

datestr=`date "+%Y-%m-%d-%H%M%S"`

mv ~/Downloads/crash "actx-app_"$datestr"_actx.crash"

Rzeczy można zautomatyzować, gdzie można przeciągać i upuszczać w Xcode Organizer, robiąc dwie rzeczy, jeśli używasz QuincyKit / PLCR.

Najpierw musisz edytować zdalny skrypt admin / actionapi.php ~ line 202. Wydaje się, że znacznik czasu nie jest prawidłowy, więc plik kończy się nazwą "crash", której Xcode nie rozpoznaje (chce czegoś dot crash): {]}

header('Content-Disposition: attachment; filename="crash'.$timestamp.'.crash"');

Po Drugie, po stronie iOS w QuincyKit BWCrashReportTextFormatter.m ~ linia 176, Zmień @"[TODO]" na @"TODO", aby ominąć złe postacie.

 0
Author: Kalle,
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
2013-01-13 09:56:55

Atos jest przestarzały, więc jeśli używasz OSX 10.9 lub nowszego, może być konieczne uruchomienie

xcrun atos

Ostrzeżenie:/usr/bin / atos jest w ruchu i zostanie usunięty z przyszłego systemu operacyjnego X release. Jest teraz dostępny w narzędziach programistycznych Xcode być wywołane przez: xcrun atos

 0
Author: elv1s,
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
2013-11-25 23:45:32

Lubię używać Texttwrangler do wykrywania błędów w oryginalnym przesłaniu aplikacji. (Dane awarii zostaną znalezione na twoim koncie itunesConnect.) Korzystając z powyższej metody kopiuję oryginał.następnie skopiuj utworzony przeze mnie plik symbolicatecrash do innego pliku TextWrangler. Porównanie tych dwóch plików wskazuje różnice. Plik symbolicatecrash będzie miał różnice wskazujące na numer pliku i linii problemów.

 0
Author: Mountain Man,
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-09 23:28:18

Używamy Google Crashlytics do nadzorowania dzienników awarii, uczucie jest bardzo aktualne i wygodne w użyciu.

Linki do dokumentów: https://docs.fabric.io/apple/crashlytics/missing-dsyms.html#missing-dsyms

Wszystko o zaginionych dsymach Fabric zawiera narzędzie do automatycznego przesyłania DSYM projektu. Narzędzie jest uruchamiane za pomocą skryptu /run script, który jest dodawany do fazy budowania skryptu Run Script podczas procesu wdrażania. Mogą jednak zaistnieć pewne sytuacje, gdy dSYM przesyłanie nie powiedzie się z powodu unikalnych konfiguracji projektu lub jeśli używasz kodu bitowego w aplikacji. Jeśli przesyłanie nie powiedzie się, Crashlytics nie będzie w stanie symbolizować i wyświetlać awarii, a na pulpicie nawigacyjnym Fabric pojawi się komunikat "Brak dSYM".

Brakujące dsymy można ręcznie załadować, wykonując czynności opisane poniżej.

Uwaga: Jako alternatywa dla automatycznego narzędzia do przesyłania dSYM, Fabric udostępnia narzędzie wiersza poleceń( upload-symbols), które można ręcznie skonfigurować do uruchamiania jako część procesu budowy Twojego projektu. Instrukcje konfiguracji można znaleźć w sekcji upload-symbols poniżej.

...

 -1
Author: Steven,
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-01-05 05:42:59