2012-08-31 9 views
20

Próbuję uruchomić profiler czasu XCode na mojej aplikacji, która działa na moim urządzeniu, ale nazwy symboli pojawiają się jak 0x2fe26643 zamiast [MyClass myMethod]. Zdaję sobie sprawę, że muszę ponownie symbolizować aplikację, ale nie wiem jak.Zarejestruj aplikację dla Symbolication w XCode Profiler

Kilka odpowiedzi like this i this powiedz, aby nacisnąć "Ponownie symbolizuj", znajdź swój plik binarny na liście, a następnie naciśnij "Zlokalizuj", aby znaleźć dSYM ręcznie. Moja aplikacja nie znajduje się na liście zwanej dSYM Locations:

enter image description here

Jak mogę dostać moje wyniki symbolicated?

UPDATE: Zamieściłem klip z YouTube, co wygląda na to, kiedy próbuję ponownie symbolicate: http://www.youtube.com/watch?v=CcLGRNkmako

+0

Właśnie zauważyłem swój błąd: „Re-symbolication wymaga MyAppName.app.dSYM i AppleA5AE2 mieć pasujących UUID” –

+0

Dzieje się tak, gdy wybrałeś inną aplikację z tej listy i wybierz plik .dSYM dla aplikacji . Nadal nie wiem, jaki jest problem w twoim przypadku, ale pomyślałem, że wspomnę o tym tutaj. Na przykład spróbuj za pomocą aplikacji "Przyspieszanie", a otrzymasz: https://dl.dropbox.com/u/8307930/uuid.png (Moja aplikacja to "MultiVideoPlay".) –

+0

Czy dzieje się tak również w przypadku wszystkich aplikacji lub Po prostu spróbuj utworzyć przykładowy projekt i sprawdź, czy to działa dobrze –

Odpowiedz

2

Oznaczają one nacisnąć przycisk „Locate”, a następnie znaleźć swoją aplikację w ~/Library/Developer/Xcode/DerivedData. Odkryłem jednak, że następujący wydaje się działać:

  • Preferencje> Wyszukiwanie Ścieżki
  • Dodaj ~/Library/Developer/Xcode/DerivedData (I rzeczywiście to jako/Users/rnapier/..., więc nie jestem pewien jeśli ~ działa)

To nadal nie zawsze automatycznie mi symbolizuje. Ale pozwala mi używać pliku> Re-Symbolicate Document, a następnie naciśnij przycisk "Symbolicate" i działa on dla mnie. Fakt, że to nie działa "po wyjęciu z pudełka" jest obłędny ...

Polecam podszywanie radr://10158512 (który sam jest duplikatem 10015727, ale ten nie jest w openradar).

+0

Jeśli jestem w zakładce "Binaries" i wciskam "Locate", to wydaje się, że próbujesz zlokalizować plik binarny, który jest wybrany na liście. ponieważ, jeśli mimo wszystko wybiorę dSYM, pojawi się błąd "Nie można użyć wybranych symboli - ponowna symbolizacja wymaga, aby MyAppName.app.dSYM i AppleA5AE2 miały pasujące UUIDS. – bendytree

+0

Po przejściu do zakładki" Ścieżki "i dodaniu nie ma żadnego efektu, a kiedy ponownie otworzę symboliczne okno dialogowe, już go tam nie ma ... – bendytree

+0

Dodałem '.../DerivedData' poprzez preferencje Instrumentu, ale nie przyniosło to żadnego efektu – bendytree

1

Zależy to również od miejsca, w którym XCode wstawia Twoją kompilację. Możesz wybrać "MyCoolApp.app" w organizatorze projektu XCode, prawym lub kliknięciem kontrolnym "Show in Finder". Nie wszystkie ustawienia projektu umieści go w DerivedData (kilka różnych ustawień projektu może konspirować, aby umieścić go w różnych lokalizacjach). Teraz, gdy już odkryłeś, gdzie XCode deponuje twoje kompilacje, możesz spróbować dodać je do Instrumentów, używając kroków opisanych wcześniej. Gdy pojawi się okno dialogowe Plik po kliknięciu "Zlokalizuj ...", możesz po prostu upuścić plik .app z Findera w oknie dialogowym Plik, aby przejść do tego katalogu.

+0

Dzięki quellish - Sprawdziłem dwukrotnie i moja aplikacja znajduje się w katalogu DerivedData – bendytree

12

Miałem ten sam problem podczas próby profilowania mojej aplikacji na urządzeniu (działało dobrze w symulatorze). Podczas próby ponownego symbolikowania plik binarny aplikacji nie pojawiał się w ogóle na liście dialogowej "Lokalizacje dSYM", więc nie byłam w stanie go wybrać, a następnie użyć przycisku Zlokalizuj, aby powiązać odpowiedni dSYM, co sugerowały inne odpowiedzi .

Udało mi się przywrócić symbolikę w profilowaniu urządzenia, przechodząc do Edit Scheme w Xcode i zmieniając profil Build na Debug zamiast Release.

+0

Dzięki! To rozwiązało mój problem. – bmueller

+4

Może to jednak wpłynąć na wydajność testów. Instrumenty należy zawsze uruchamiać w trybie Release. – Tudorizer

+0

@Tudorizer Całkowicie się zgadzam. Ale jak rozwiązać problem bez korzystania z trybu debugowania? – fishinear

8

Oto, co zrobiłem, aby włączyć profilowanie, bez przełączania do trybu debugowania. To jest dla Xcode 4.5.1

  1. Utwórz nowy „Profil” zbudować konfigurację, w oparciu o istniejącą „uwolnienie” konfiguracji: Wybierz projekt w nawigatorze projektu aby otworzyć edytor projektu.Wybierz projekt w edytorze projektów i kliknij przycisk Informacje. Rozwiń sekcję Konfiguracje w okienku informacyjnym i kliknij przycisk Dodaj (+) u dołu sekcji. Wybierz istniejącą konfigurację "Zwolnienie" z wyskakującego menu jako punkt początkowy dla nowej konfiguracji. Wybierz nazwę kopii i wpisz "Profil". Zobacz więcej w Xcode User Guide.

  2. ustawić kod Podpisanie Tożsamość „Profil” konfiguracji do „iPhone Developer” (lub takie same jak w konfiguracji „Debug”): Kliknij przycisk Ustawienia Build, aby wyświetlić ustawienia budowania na projekt. Aby zmienić ustawienia kompilacji w nowej konfiguracji dla wszystkich celów w projekcie, edytuj je na poziomie projektu. Aby zmienić ustawienia kompilacji dla pojedynczego targetu, wybierz ten cel docelowy . Jeśli edytujesz je na poziomie projektu, upewnij się, że następnie dwukrotnie sprawdzisz poziom docelowy: ustawienia docelowe zastąpią ustawienia projektu . Kod Podpisywanie tożsamości znajduje się w sekcji "Podpisywanie kodu" .

  3. Upewnij się, że ustawienie „Generowanie symboli debugowania” TAK dla „profilu” konfiguracji. W mojej sprawie było już TAK.

  4. Ustaw nową konfigurację „Profil”, aby być wykorzystywane przez „Profil” schemacie: Wybierz „produktowych> Edytuj schemacie” z menu wybierz zakładkę „Profil appname.app ” na lewo , a następnie wybierz "Profil" w "Konfiguracja konfiguracji".

  5. W pliku appname.entitlements ustaw właściwość "get-task-allow" na YES.

  6. Naciśnij klawisz ALT i wybierz "Produkt-> Oczyść folder kompilacji" z menu .

  7. Teraz wybierz „na produkcie> Profil” z menu, i powinno być dobrze iść .

Wszelkiego rodzaju dziwne rzeczy mogą się zdarzyć, jeśli nie zrobisz tego wszystkiego. Nie pojawiły się żadne symbole lub pojawiły się tylko symbole biblioteczne. Mam symbole wyświetlane tylko wtedy, gdy najpierw robisz kompilację debugowania, a następnie profilujesz (co oznacza, że ​​symbole są prawdopodobnie niepoprawnie pobierane z kompilacji debugowania). Miałem profilera narzekającego na niedopasowanie UUID i miałem niesławny błąd "Uprawnienia nie pasują" (więcej na ten temat: here).

1

W przypadku zmiany kodu zalogowaniem tożsamość za „uwolnienie” zbudować konfigurację z „Automatyczne Selector Profil: iPhone Distribution” do „automatycznego wyboru profilu: iPhone Development” (podkreślenie moje), a następnie z aplikacji binarny będzie wyszczególnione w arkuszu Przeznaczenie instrumentu i możesz wskazać go w folderze Dane pochodne.

0

Brak sukcesu z wyżej wspomnianym.Co zadziałało dla mnie z Xcode 5:

  • Znajdź lokalizację produktu zgodnie z opisem w quellish. Dawny.

    /Users/ME/Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphoneos /Users/ME/Library/Developer/Xcode/DerivedData/Build/Products/Release-iphoneos

  • otwartych instrumentów Preferencje i dodać lokalizację (y) w "dSYMs i ścieżki".

Powiązane problemy