2015-04-06 7 views
30

Po włączeniu wszystkich punktów przerwania wyjątków moja aplikacja zawsze zatrzymuje się w AppDelegate, ale jestem w stanie kontynuować wykonywanie programu, ale jego bardzo denerwująca przyczyna zawsze prowadzi mnie do appdelegate. Jakieś pomysły, dlaczego?Zawsze zatrzymuj się w delegacie aplikacji po włączeniu Wszystkie wyjątki punkt przerwania

enter image description here

+0

nie jest to pytanie, ale AppDelegate jest pierwszą rzeczą, uruchomił Twoją aplikację, więc może to być powód. –

+1

1. Co to jest wiadomość w okienku lldb? 2. Włączaj punkty krytyczne Objective-C. Kliknij prawym przyciskiem myszy "Wszystkie wyjątki, wybierz" Edytuj punkt przerwania ", zmień wyskakujące okienko z" Wszystkie "na" Cel-C. "3. Czasami kod" zostaje pomieszany ", usuń wszystkie punkty przerwania, zamknij i ponownie uruchom Xcode. – zaph

+0

Zaph, 1: okienko lldb nie wyświetla komunikatu, po prostu (lldb), 2: tak, przejście na objc zadziałało, nie wiem dlaczego? możesz dodać go jako odpowiedź, jeśli chcesz, thx ty! – Godfather

Odpowiedz

55

Tylko umożliwić breakpoints Objective-C.

Aby zobaczyć rzeczywisty oświadczenie, że jest przyczyną błędu dodać przerwania wyjątek:

  1. z głównego menu Debug: Breakpoints: Tworzenie wyjątków Breakpoint.

  2. Kliknij prawym przyciskiem myszy punkt przerwania i ustaw wyjątek na Objective-C. Zignoruje to inne typy wyjątków, takich jak C++. Istnieją części interfejsów API, które wykorzystują wyjątki, takie jak dane podstawowe (Apple to Special).

  3. Dodaj akcję: "po $ arg1".

Uruchom aplikację, aby uzyskać punkt przerwania, a znajdziesz się w linii powodującej wyjątek, a komunikat o błędzie pojawi się w konsoli debuggera.

Breakpoint example:

+1

Działa !! Dziękujemy –

+0

Doskonała wskazówka! Dzięki. To doprowadzało mnie do szału przez kilka projektów. – VaporwareWolf

4

wyjątkami C++ wspólny kod i normalnej. Punkt przerwania wyjątku przechwytuje każdy podniesiony wyjątek, nawet jeśli są one obsługiwane poprawnie. Więc jeśli nie określisz Obj-C tylko zauważysz, że wykonanie zatrzymuje się w wielu pozornie przypadkowych miejscach. Cały czas korzystam z tego w AVAudioPlayer.

Inną rzeczą, na którą należy zwrócić uwagę, są brakujące zasoby. Natknąłem się na to pytanie od innego pytającego, który wydaje się również mieć ten sam problem.

Xcode throws an exception in Main() in iOS 8 with 'all exceptions' breakpoint

8

Jeśli używasz Swift, czy chcesz mieć wszystkie wyjątki zrobione, można zmienić opcję na wszystkie wyjątki automatycznie kontynuowane po ocenie działań. Wystarczy znaleźć w Breakpoint Navigator i prawo/ctrl kliknij wszystkie wyjątki Breakpoint, aby go edytować: enter image description here

Następnie zaznacz pole opcji: enter image description here

Powiązane problemy