2011-10-06 12 views
29

Mam raport o awariach z BugSense, więc mam informacje na temat położenia pamięci awarii, ale nie są one symbolizowane. Również Bug Sense nie wysyła tradycyjnych raportów o awariach, ale nadal daje mi ślad błędów. Próbuję więc użyć Atosa, aby uzyskać dokładną lokalizację moich awarii. Zarchiwizowałem aplikację w XCode 4 i wykorzystałem tę wersję do przesłania do sklepu z aplikacjami, więc mam plik dSYM. Mam uruchomić następujący kod:Atos nie może uzyskać symboli z dSYM zarchiwizowanej aplikacji

atos -arch armv7 -o MyApp.app.dSYM 0x001057e9 

Jednak zamiast uzyskanie prawidłowego wyjścia, ja otrzymuję błąd:

atos cannot load symbols for the file MyApp.app.dSYM for architecture armv7 

Wszelkie sugestie, dlaczego to może być prawda? Nie usuwam symboli debugowania z aplikacji.

Odpowiedz

86

Aby właściwie dostać symboli z pliku dSYM zarchiwizowanych aplikacji i uzyskać przydatne informacje z raportów o awariach BugSense (lub jakiekolwiek inne raporty o awariach dla tej sprawy):

  1. Kopiowanie ślad stosu z BugSense do TextEdit lub którykolwiek inny edytor tekstu. Upewnij się, że używasz ikony "schowka" zamiast po prostu kopiować tekst. W przeciwnym razie nie otrzymasz rzeczywistych lokalizacji pamięci śledzenia stosu, które są niezbędne do wyszukiwania odniesień za pomocą atos i oznaczenia śladu stosu.
  2. Otwórz XCode i przejdź do Organizatora
  3. Znajdź swoje archiwum i kliknij je prawym przyciskiem myszy, przejdź do otwarcia go w Finderze.
  4. Przejdź do katalogu archiwum, zwykle ~/Library/Developer/XCode/Archives/YYYY-MM-DD/
  5. idź do konkretnego archiwum, a następnie dSYMs folderu
  6. Zobaczysz plik MyApp.app.dSYM i można pomyśleć, jest to plik, który powinien uruchomić atos przeciwko! To jest niepoprawne. To w rzeczywistości kolejny pakiet!cd do tego pakietu, do folderu: MyApp.app.dSYM/Contents/Resources/DWARF, a znajdziesz inny plik po prostu o nazwie MyApp. To jest rzeczywisty plik dSYM.
  7. Uruchom atos -arch armv7 -o MyApp 0x0000000 (lub jakikolwiek inny adres pamięci), aby znaleźć lokalizację błędu lub po prostu atos -arch armv7 -o MyApp, aby przejść do trybu interaktywnego.
+19

Wow, krok 6 bardzo pomógł tutaj. Dzięki! – pt2ph8

+1

"-arch armv7" - jest naprawdę ważne, mam błędne dane bez niego – AlexeyVMP

+2

Mam ślad, ale brak rejestru awarii, czy to nadal będzie działać? Wydaje mi się po prostu dać mi losową lokalizację. Oto przykładowa linia z mojego śladu wstecznego: MyApp 0x00054b23 MyApp + 301859 – jjxtra

3

Musisz uzyskać właściwy adres. Możesz użyć powyższego rozwiązania, ale musisz użyć heks matematyki, aby uzyskać właściwy adres pamięci. slajd + adres stosu - adres ładowania.

+1

Ta odpowiedź pokazuje, jak uzyskać wymienione wartości: http: // stackoverflow.com/questions/13574933/ios-crash-reports-atos-not-working-as-expected/13576028 # 13576028 – Kerni

Powiązane problemy