Porównaj ceny domen i usług IT, sprzedawców z całego świata

Debugowanie w Xcode - wykonywanie kodu i punktów przerwania


Chciałbym poznać najlepszy sposób debugowania w xcode. Wiem, jak ustawić punkt przerwania, ale najlepiej chciałbym, aby symulator zatrzymał się, a następnie przeszedł przez kod ...
Nie przechodź przez punkty przerwania, ale przechodź przez kod wiersz po wierszu, aby zobaczyć, dokąd zmierza, jakie metody są uruchamiane itp.
Czy to możliwe, a jeśli tak, to w jaki sposób?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W lewym dolnym rogu okna kodu w Xcode 4 można zobaczyć elementy sterujące krokiem debugowania. Każdy ma krótki tekst alternatywny, który to wyjaśnia. Tutaj wyjaśnię bardziej szczegółowo. Nauka bycia ekspertem w debugowaniu jest tematem wielu samouczków.
Odtwórz tekst przycisku:

kontynuować wykonywanie programu
... Prawdopodobnie już to znalazłeś. Kliknięcie go powoduje przejście do następnego punktu przerwania.
Skacząca strzałka:

wyjdź poza
... Wielokrotne naciśnięcie tego przycisku umożliwi przejście przez program na obecnym poziomie pokrycia, tak jak w przypadku programu. Umożliwi to obserwację zachowania programu krok po kroku przy użyciu bieżącej metody. Po zakończeniu bieżącej metody Step over przeniesie Cię do metody wywołującej o jeden krok wyżej w stosie programu.
Tekst alternatywny strzałki w dół:

Step into
... Kliknięcie tego przycisku spowoduje uwzględnienie nowej metody w jej zakresie i umożliwi wyświetlenie kodu w wywołanej metodzie, jeśli została skompilowana w celu debugowania. Na przykład kliknięcie tego przycisku w bieżącym wierszu kodu w powyższym oknie debugowania spowoduje przejście do metody _generateSources, którą można następnie wykonać za pomocą polecenia Step over.
Tekst alternatywny strzałki w górę:

Step out
... Wyprowadza cię z bieżącego kontekstu i przechodzi do metody wywołującej o jeden krok w górę stosu programów. Zachowuje się to identycznie jak wykonanie metody za pomocą Step over, normalne wykonanie programu i wykonanie wszystkich wierszy kodu w obszarze źródłowym, których nie debugowałeś za pomocą Step over.
Kliknij sylwetkę na niebieskim tle, aby zobaczyć aktualny stos wywołań. Stos wywołań będzie zawsze przechodził z bieżącego zakresu do pierwszej metody, która została wywołana w celu uruchomienia programu. Każda metoda, którą tu widzisz, została wywołana sekwencyjnie w celu osiągnięcia - [HelloWorldLayer init]. Po kliknięciu

Step out
, bieżąca linia kodu wykonywalnego powróci do - [węzeł CCNode] i jeśli masz dla niego źródło, możesz go wyświetlić.
Po lewej stronie znajdują się aktualne zmienne lokalne, widoczne z zakresu bieżącego wiersza kodu (wiersz 76 na tym obrazku). Te zmienne pozwalają faktycznie używać powyższych poleceń, takich jak

Step over

.

background

i winSize

-

są to zmienne lokalne, które zostały zdefiniowane w tym zakresie i są obecnie używane. Kiedy kula wyjdzie, znikną.

_cmd

jest wskaźnikiem do selektora aktualnie wywoływanego w Objective-C: - [HelloWorldLayer init]. Nie będziesz tego potrzebować, dopóki nie staniesz się zaawansowanym debugerem.

self

jest wskaźnikiem do obiektu zawierającego wszystkie wartości ivars należące do bieżącej klasy wykonywalnej HelloWorldLayer, a

objc_super

-pointer do klasy nadrzędnej HelloWorldLayer.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Chciałbym dodać klawisze skrótu, aby odpowiedzieć na @ kąt Thomson.
  • Użyj „c”, aby kontynuować. „s” oznacza krok, „n” oznacza następny, „f” oznacza zakończenie. Nie lubię kontrolować debuggera za pomocą myszy. Te ikony są zbyt małe i unoszenie się nad nimi jest uciążliwe (czasami). Zawsze byłem klawiszowcem i bardzo dobrze mi się na nim gra.
  • Powinieneś także spróbować użyć po -it wyświetla wartości zmiennych z klauzulami typu forward. w jaki sposób przez _varName ... Ułatwia sprawdzenie, czy zmienna jest pusta itp.,
  • Możesz także zmienić aliasy poleceń, zmieniając
    ~/.lldbinit
    .

Oto oficjalny samouczek:

http://lldb.llvm.org/tutorial. html
http://lldb.llvm.org/tutorial.html... I kolejny samouczek:

http://www.informit.com/articles/article. aspx?p=1829415&seqNum=6
http://www.informit.com/articl ... D6... To, co wskazałem powyżej, to najbardziej podstawowe funkcje debugowania, które najczęściej robią programiści. Istnieją inne opcje, takie jak punkty przerwania wyjątków i programy rozruchowe, ale jestem prawie pewien, że są one przeznaczone na inny dzień, jeśli dopiero zaczynasz.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się