2013-04-05 16 views
9

Naprawdę mam problemy z debugowaniem kodu w naszym dużym projekcie ios. Wygląda na to, że wszyscy wpadli w szał na blokach i wysyłaniu kolejek wszędzie.Jak skutecznie debugować za pomocą bloków w Xcode

Kiedy jestem proszony o debugowanie fragmentu kodu, bardzo lubię go przeglądać i obserwować, jak rzeczy się zmieniają, i zobaczyć, co naprawdę dzieje się ze zmiennymi. Nie mogę tego zrobić łatwo z wszystkich bloków, które zostały umieszczone w dwóch powodów:

  1. muszę umieścić pułapkę w obrębie każdego małego bloku zatrzymać się w tym bloku.

  2. W bloku, zmienne z bez bloku nie są wyświetlane w użyteczny sposób i nie mogą być łatwo zrzucone na konsolę za pomocą komendy po.

Czy istnieje lepszy lub lepszy sposób na przejrzenie/oszacowanie kodu, który jest bogaty w bloki? Czy może czegoś tutaj brakuje?

Odpowiedz

3

Czy używasz punktu przerwania z automatycznym zrzutem konsoli (bez zatrzymywania uruchomionej aplikacji)?

Istnieje bardzo dobry, ale naprawdę użyteczny samouczek: about intermediate debugging.

Szczęśliwe kodowanie!

+1

Nie jestem pewien, co masz na myśli przez "punkt przerwania z automatycznym zrzutem konsoli". Samouczek był dla mnie bardzo przydatny. – HalR

+0

OK, możesz ustawić wiele praktycznych akcji dla punktu przerwania (nawet wiadomość dźwiękowa :). Jednym z nich jest komunikat dziennika o podobnej składni jak NSLog. I automatycznie wydrukuje odpowiedni komunikat dziennika. – ingaham

1

Dlaczego nie używać funkcji NSLog() do wyprowadzania potrzebnych zmiennych w blokach?

+0

Mogę dodać kod NSLog() do mojego kodu, i to jest jeden ze sposobów, w jaki patrzę na rzeczy, ale potem zmieniam podstawę kodu, i chociaż zawsze mogę dwukrotnie sprawdzić przy kontroli źródła, wciąż może nieumyślnie dodać coś do czyjegoś kodu. Miałem nadzieję na inne opcje. – HalR

1

można wydrukować obiektu w konsoli, używając w tym:

Przykład:

po object.name 
po object.age 

Inny sposób: umieścić punkt przerwania w kodzie. Po zatrzymaniu wykonywania w tym momencie najedź na niego wskaźnikiem myszy.

Dla bardziej jasnego szczegółowo, spójrz na moją odpowiedź na to pytanie: How to inspect elements from NSArray and NSDictionary in xcode?

1

Masz rację, to jest trochę uciążliwe do bloków debugowania. Próbowałem użyć "auto-dump-breakpoints", ale okazało się, że są okropne w utrzymaniu ...

Skończyło się na użyciu w zasadzie NSLog. Ale problem z NSLog() polega na tym, że nie chcesz mieć wszystkich tych, którzy logują się w twojej kompilacji wydania. Więc polecam użyć narzędzia jak:

MWLogging

Myślę, że to naprawdę świetny. Można przeczytać o tym i zalogowaniu w ogóle w tym blogu:

iOS Development: You're Doing It Wrong

to naprawdę warto przeczytać.

+0

Lub używając CocoaLumberjack :) – AndrewShmig

Powiązane problemy