2009-09-02 11 views
6

Temat mówi, że to wszystko naprawdę ... Czy jest tam dobry tutorial dla Debuggera Xcode? Znajduję dribi i drabiny z rzeczami, ale nic kompleksowego, ani wystarczająco głębokiego. Moim problemem jest to, że teraz to ...Gdzie jest dobry samouczek na temat prawidłowego korzystania z debuggera Xcode?

#0 0x90d9c688 in objc_msgSend 
#1 0x30506515 in NSPopAutoreleasePool 
#2 0x30901697 in _UIApplicationHandleEvent 
#3 0x32046375 in PurpleEventCallback 
#4 0x30245560 in CFRunLoopRunSpecific 
#5 0x30244628 in CFRunLoopRunInMode 
#6 0x308f930d in -[UIApplication _run] 
#7 0x309021ee in UIApplicationMain 
#8 0x00001ff8 in main at main.m:14 

... połączeniu z tym ...

0x90d9c688 <+0024> mov 0x20(%edx),%edi 

... i to ...

EXC_BAD_ACCESS 

.. .Nie pomaga dużo. Lub w ogóle, naprawdę. Uciekam się do komentowania linii kodu i musi istnieć lepszy sposób.

Dzięki

UPDATE: Chyba może mój odpowietrzenie było trochę odwrócenie uwagi od prawdziwego pytanie, chociaż wskazówki pomogły wyjaśnić rzeczy trochę. To, do czego naprawdę się zajmuję, jest nie tylko wyjaśnieniem powyższego, ale po prostu ogólnie używa Debuggera. Pytania, które zazwyczaj mam to:

  • Dlaczego Debugger czasami przejść z widoku kodu źródłowego (co ja zakładając) kod montaż kiedy krok nad lub w? Czy istnieje sposób, aby zobaczyć oba jednocześnie w tym samym czasie?
  • Czy jest coś szczególnego, czego powinienem szukać w kodzie montażu, lub czegokolwiek, co mogłoby pomóc w danej sytuacji?
  • Wygląda na to, że punkty przerwania pozwalają na działania, więc jestem ciekawy, jak można to wykorzystać, zamiast pieprzyć mój kod za pomocą instrukcji NSLog.

Znam te są szerokie i prawdopodobnie powinien zostać poproszony indywidualnie, ale nie chcą zaśmiecać miejsca, a więc z tych tematów, które mogą być już udokumentowanych gdzie indziej.

Zauważyłem również jest prawie duplikat pytanie zadawane tutaj: What are some Objective-c debugging tips?

+0

Wiem, że to stare pytanie. Ale dla każdego, kto się na to natknął, znalazłem [ten poradnik Ray'a Wenderlicha] (http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1) absolutnie doskonałe. –

Odpowiedz

2

Katastrofa jest wewnątrz kodu Apple (dlatego debugger nie pokazać źródła), a przyczyną tego jest faktycznie gdzieś indziej - ci” ve wydał tymczasowy obiekt, który miał zostać zwolniony przez pulę autorelease. Spowodowało to awarię puli autoreas.

Miałeś zwolnić tylko obiekty, które:

  • już zatrzymane samodzielnie za pomocą retain
  • zostały zwrócone przez zaledwie init, copy i new metod (i ich wariantów zawierających te słowa)

Niestety nie można się tego nauczyć z debuggera, tylko z dokumentacji i doświadczenia ...

Możesz użyć Clang Analyzer, aby znaleźć takie błędy (czasami).

+0

Gdybym mógł sprawdzić obie odpowiedzi jako zaakceptowane, zrobiłbym to, pomimo, że nie odpowiedzieli na pytanie w sposób, w jaki miałem nadzieję. W końcu wcale tak naprawdę nie ma to znaczenia. Więc idę z tym, który pierwszy doprowadził mnie do przyczyny katastrofy, chociaż myślę, że muszę ponownie przejrzeć zasady zarządzania pamięcią, aby zrozumieć, dlaczego dostaję katastrofę. Dzięki obu! –

2

Oto great tutorial na cechy debuggera XCode 4.

Odnośnie Państwa pytania r dlaczego debugger przechodzi od widoku kodu źródłowego do widoku zespołu ... Przechodzi do widoku złożenia, gdy wykonywanie kodu przechodzi do klas, które nie są częścią plików kodu źródłowego ... np. kiedy wkraczasz w kod będący częścią frameworków, których używasz, takich jak UIKit.

Powiązane problemy