2010-06-20 19 views
7

Używam Xcode 3.2.3 i iPhone SDKXcode, żadnych symboli debugowania dla pewnej podklasy

Więc próbuję debugowania podklasy UIView, uderzę breakpoint w zastąpiona metoda i nie mogę zobacz dowolne symbole w GUI lub gdb, tylko globale i rejestry.

To, co widzę:

(gdb) po self 
No symbol "self" in current context. 

Jednak kiedy ustawić punkt przerwania w podklasie UIViewController, wszystkie symbole są tam:

(gdb) po self 
<MyViewController: 0x5c18ae0> 
Current language: auto; currently objective-c 

Niektóre rzeczy próbowałem:

  • wyczyść wszystko/odbuduj
  • restart Xcode
  • zmiana między debugowania i zwolnij
  • config te opcje w Projekcie ustawienia:
    • GCC_DEBUGGING_SYMBOLS = Wszystkie
    • Symbole DEBUG_INFORMATION_FORMAT = karzeł KARŁOWATA w/dSYM File
    • BUILD_VARIANTS = normalny, debugowania
  • zagraża Xcode, przeklinając i wpisując rm -rf /Developer w wierszu zachęty bash root

Proszę o pomoc, moje palce krwawią od debugowania z NSLog

Odpowiedz

3

więc zmiana z Debug do Release załatwiło sprawę i mam wszystkie moje symbole debugowania.

myślę, że to po prostu błąd w SDK 4.0.

+0

czyli czy należy oznaczyć to jako odpowiedź? – Dad

+0

To działało również dla mnie. W ogóle nie jest intuicyjny. Zmieniając wersję, aby uzyskać kompilację, możesz uzyskać symbole ... –

4

przeżywam ten błąd często. Moje obejście polega na wpisaniu polecenia bt na konsoli gdb, a następnie automagicznie sortuje się i rozpoczyna rozpoznawanie symboli w bieżącym kontekście.

+0

Ta odpowiedź zadziałała natychmiast dla mnie w XCode 8. Fantastyczna odpowiedź! –

0

Hmmm, to starał się powtórzenia błędu w 3.2.3 i SDK4 Finał bez powodzenia - zdolne do debugowania UIView podklasy zgodnie z oczekiwaniami. Czy dzieje się to przy użyciu jednej z wersji beta?

0

się ze mną dzieje, na uwolnienie non-beta. Właśnie zauważyłem, że występuje tylko podczas wywoływania metody zdefiniowanej przez klasę, tj. (+) Nie (-)

Nie miałbym nic przeciwko posiadaniu wskaźnika "ja", ale wydaje się, że wymazuje on wszystkie zmienne lokalne wyświetla się w debugerze, a to jest po prostu złe. Metoda

0

MTS”pracował dla mnie. Zmiana z debugowania na wydanie rozwiązuje ten problem. Jak dziwnie. Mogę obalić teorię ewolucji oprogramowania, ponieważ doświadczam błędu wewnątrz metody instancji.

0

w gdb typu bt.

Jeśli widzisz siebie = < wartość chwilowo niedostępny z powodu optymalizacje > gdziekolwiek to dlatego Xcode zostało ustawione mają być zoptymalizowane.

Przejdź do ustawień kompilacji i wpisz optymalizacji.

Jeśli poziom optymalizacji dla debugowania lub wydania jest ustawiony na Najszybszy, to powoduje problem.

Zwolnienie należy pozostawić najszybciej, aby kod działał prawidłowo podczas budowania w celu dystrybucji. Lepiej zmienić konfigurację kompilacji na schemacie.

opt + kliknij przycisk Uruchom. Po lewej kliknij Run YourAppsName.app, następnie Info i wybierz debugowania.

Powiązane problemy