Brakujące nazwy symboli podczas profilowania aplikacji IPhone za pomocą instrumentów

Kompiluję aplikację na IPhone ' a za pomocą wiersza poleceń (więc nie ma opcji XCode) i nie jestem w stanie wyświetlić nazw moich symboli podczas profilowania przy użyciu instrumentów. Wypróbowałem kilka flag takich jak-gdawrf - 2 i-g bez powodzenia. Próbowałem również używać dsymutils do generowania .plik dSYM, ale nie mam pojęcia, jak mam go używać, aby również nie powiódł się.

Każda pomoc będzie bardzo mile widziana!

Author: Mac Twist, 2010-05-06

12 answers

Zmieniłem ustawienia mojego projektu, aby nie zawierać pliku dSYM podczas budowania:

Tutaj wpisz opis obrazka

Zmiana go na plik dSYM pomogła profilerowi desymbolizować Symbole i naprawiła mój problem:

Tutaj wpisz opis obrazka

 72
Author: Antoine,
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-03-20 08:03:49

Nadal miałem z tym problemy.

Mój problem polegał na tym, że mogłem zobaczyć generowany plik dSYM, ale Instrumenty go nie wykrywały.

Aby to naprawić, wykonaj następujące czynności:

  1. Znajdź plik dSYM (powinien znajdować się w ~ / Library/Developer/DerivedData/APP_NAME-XXXXXXX/Build/Products / [BUILD_TYPE]-[DEVICE-TYPE]/
  2. Po zatrzymaniu instrumentów, kliknij plik - > ponownie symbol dokumentu
  3. przewiń w dół do wpisu z nazwą aplikacji
  4. Kliknij "Znajdź" i wybierz folder z kroku 1
  5. Kliknij przycisk Start, aby rozpocząć profilowanie
 58
Author: youdonotexist,
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-20 17:47:27

Jak instrumenty uzyskują informacje o debugowaniu:

Instrumenty uzyskują informacje o debugowaniu zplik dSYM, który jest zwykle generowany automatycznie przez XCode podczas ustawiania formatu informacji debugowania na DWARF z plikiem dSYM w połączeniu ze znacznikiem wyboru w polu opcji Generuj symbole debugowania. Ustawienie tych opcji doda dodatkowy krok do procesu budowania Xcode i wygenerować plik dSYM po aplikacji został skompilowany. Każdy dSYM jest zbudowany z UUID, który odpowiada UUID w Sekcja Mach-O w postaci binarnej, z której pochodzi. Importer Spotlight indeksuje uuid KAŻDEGO pliku dSym znajdującego się w lokalizacji dostępnej dla Spotlight na komputerze Mac. Dlatego SPOTLIGHT robi całą czarną magię i jest odpowiedzialny za połączenie między .uruchomiona aplikacja i jej odpowiedni .plik dSYM.

Jak wygenerować informacje o debugowaniu i plik dSYM bez XCode:

Upewnij się, że używasz FLAG-gdwarf-2 i-G. (Inne kombinacje flag mogą działać)

- g Generowanie informacji o debugowaniu w natywny format systemu operacyjnego (stabs, COFF , XCOFF, or DWARF 2). GDB może pracować z tym debugowaniem informacje. Na większości systemów wykorzystujących format stabs, - g umożliwia użycie dodatkowych debugowanie informacji, które tylko GDB można użyć; ta dodatkowa informacja sprawia, że debugowanie działa lepiej w GDB, ale będzie prawdopodobnie spowoduje awarię innych debugerów lub odmawiam czytania programu. Jeśli chcesz kontrolować na pewno, czy do wygenerować dodatkowe informacje, użyć -gstabs+,- gstabs, -gxcoff+,- gxcoff lub-gvms (patrz poniżej). GCC pozwala używasz-g z -O. skróty podjęte przez zoptymalizowany kod może okazjonalnie produkować zaskakujące wyniki: niektóre zmienne, które zadeklarowałeś może w ogóle nie istnieć; przepływ kontroli może na krótko przenieść się tam, gdzie nie się spodziewać; niektóre stwierdzenia mogą nie być wykonywane, ponieważ obliczają wyniki stałe lub ich wartości były już pod ręką; niektóre wypowiedzi mogą wykonaj w różnych miejscach, ponieważ zostały wyprowadzone z pętli.
Niemniej jednak okazuje się możliwe zoptymalizowane wyjście debugowania. To sprawia, że rozsądne jest użycie optymalizatora do programy, które mogą mieć błędy.

-gdwarf-2 Generowanie informacji o debugowaniu w formacie DWARF Wersja 2 (jeśli jest to obsługiwane). To jest format używany przez DBX na IRIX 6. Z tej opcji, GCC wykorzystuje funkcje Krasnolud wersja 3 gdy są przydatne; wersja 3 jest kompatybilna z wersja 2, ale może jeszcze powodować problemy ze starszymi debuggerami.

Wygeneruj plik dSYM za pomocą dsymutil. Jeśli narzędzie nie jest rozpoznawane w wierszu poleceń, użyj spotlight, aby je znaleźć. Ważne: miejsce .plik aplikacji na komputerze mac HD przed wygenerowaniem dSYM, jeśli pracujesz na dysku sieciowym.

Dsymutil MyApp.aplikacja / MyApp-o MyApp.app.dSYM

Miejsce .plik dSYM na dysku lokalnym komputera mac i uruchom Instrumenty tak, jak zwykle.

Resettig spotlight ' s indeksowanie:

Jeśli symbole nie są pokazane, może to być dlatego, że spotligh jest na podsłuchu. Możesz spróbować zresetować indeksowanie spotlight, dodając folder zawierający plik dSYM (lub nawet dysk) do "Zapobiegaj przeszukiwaniu tych lokalizacji przez spotlight" w preferencjach spotlight, a następnie od razu go usuwając.

 34
Author: Mac Twist,
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-05-20 18:55:16

W Xcode 4.5 możesz wybrać profil z debugowania lub wydania kompilacji. Zwolnij domyślnie usuwa symbole po skopiowaniu do urządzenia. Bardzo łatwo jest przełączyć się na konfigurację debugowania w celu profilowania bez przerywania konfiguracji wydania. Aby to zrobić, wybierz produkt - > Edytuj schemat z menu XCode. Wybierz "profil" z listy pojawiających się schematów, a następnie wybierz odpowiednią konfigurację kompilacji.

Albo można zrobić osobny release / profil skonfiguruj i użyj tego w sekcji profilu w swoim schemacie. Jak dodać osobną konfigurację kompilacji opisano w Xcode User Guide.

 15
Author: Matt Connolly,
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-22 14:20:06

Spędził trzy dni próbując to rozgryźć dla Xcode 7.1/7.3...

Zmiana celu wdrożenia na najnowszą wersję (9.3 w tym czasie) naprawiła ten problem dla mnie. Moja firma celuje w 7.0, więc prawdopodobnie będę musiał stworzyć niestandardowy schemat profilowania kodu w instrumentach, aby uniknąć konieczności zmiany celu (lub zapominania o zmianie celu), gdy robimy wydanie produkcyjne.

Wydaje się, że to prawdopodobnie błąd, jeśli dSYMs nie działa w oparciu o cel wdrożenia?

 5
Author: Jason Rice,
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-05-05 16:27:40

Z Xcode 6 instrumentów możesz podać DSYM plik w następujący sposób:

  • Plik - > Symbole... menu (po zatrzymaniu profilowania)
  • Wybierz aplikację i naciśnij Zlokalizuj Przycisk
  • wybierz ścieżkę zawierającą dSYM (Zwykle ~/Library/Developer/DerivedData/APP_NAME-XXXXXXX/Build/Products/[BUILD_CONFIGURATION]-[TARGET_PLATFORM]/). Wskazówka: możesz skopiować tę ścieżkę z terminala i użyć skrótu OS X ⌘+SHIFT+G w dialog.

RównieżInstrumenty zapyta, czy należy użyć wybranej ścieżki, aby spróbować załadować dSYM dla tej aplikacji w przyszłości. Odpowiedź Tak:)

 4
Author: Anton Gaenko,
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-19 09:50:16

Problem w tym, że spotlight nie może znaleźć .pliki dSYM. Dzieje się tak dlatego, że Apple zmieniło lokalizację folderu DerivedData. DerivedData przechodzi teraz do ~ / Library

Spotlight nie będzie indeksować ~ / Library i o ile udało mi się ustalić, nie może być również indeksowany (np. mdimport jest ignorowany).

Obejściem, aby uzyskać symbole w profilerze, jest po prostu skopiowanie danych poza ~ / Library np. Twój katalog domowy zrobi dobrze.

Użyłem tej linii poleceń:

$ cp -r ~/Library/Developer/Xcode/DerivedData/AppName-xxxxxxxxxxx/Build/Products/Release-iphoneos/ ~/

Po zabiciu profilera i uruchomieniu nowego profilu zobaczysz, że symbole są ponownie dostępne.

 2
Author: Bram,
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-05 20:07:53

Sprawdź dziennik kompilacji i upewnij się, że twój przełącznik -g dociera do kompilatora - łatwo jest to źle zrozumieć, zmieniając ustawienia na poziomie projektu i/lub docelowym dla różnych konfiguracji kompilacji itp.

 1
Author: Paul R,
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-05-05 20:54:43

Innym obejściem w wersji instrumentów, która pochodzi z Xcode 4 jest użycie ponownie symbol dokumentu w menu plik dla instrumentów. Ten element menu pozwala na korzystanie z symboli znajdujących się wplik dSYM w ~ / Library/... katalog.

 1
Author: pmb,
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-08 11:49:33

Z mojego doświadczenia wynika, że zwykle jest tak dlatego, że "Profil" został wywołany przed ostatnio zmodyfikowaną wersją aplikacji została zainstalowana na urządzeniu docelowym.

Spróbuj uruchomić aplikację na urządzeniu/urządzeniu docelowym, , a następnie ponownie wywołać "profil" po ponownej instalacji.

 1
Author: Ben Guild,
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-01-15 09:25:17

Mam ten problem, ponieważ projekt XCode był na udostępnieniu sieciowym, gdzie Spotlight nie mógł znaleźć plików dSYM. Upewnij się, że jest na lokalnym dysku.

 0
Author: Michael Melanson,
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-05-27 21:11:10

Stworzyłem konfigurację budowania "profilu", aby poradzić sobie z tym problemem. Zobacz moja odpowiedź na podobne pytanie Stoskoverflow.

 0
Author: fishinear,
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:54:46