2013-03-04 17 views
5

Podczas debugowania aplikacji na telefon iPhone wystąpił błąd i aplikacja uległa awarii. Dodałem punkt przerwania wyjątku, ale nie wskazałem żadnego miejsca w kodzie i uległo awarii w main.m.Jak śledzić dokładny problem z awarią w iOS

Tutaj dodaję zrzut ekranu okna XCode, gdy aplikacja uległa awarii.

enter image description here Jak mogę znaleźć dokładny problem z powodu awarii?

Czy to możliwe? Proszę pomóż.

+0

Ja też miałem tego rodzaju problemy, ale i tak nie mogłem znaleźć dokładnego problemu. Byłbym wdzięczny, gdyby ktoś mógł wskazać tutaj jakąkolwiek możliwą drogę. :) – Mithun

+0

Jeśli masz jakieś kody w swoim programie, uprzejmie je pokaż. Tak więc soomeone może osiągnąć punkt błędu. –

+0

Obawiam się, która część mojego kodu spowodowała ten problem, losowo nawigowałem przez różne VC, nagle dostałem ten problem. Ponadto w oknie debugowania nie wspomniano o żadnym kodzie ani funkcji. Co powinienem zrobić w tym przypadku? – Mithuzz

Odpowiedz

6

Włącz Zoombie, aby w dzienniku pojawił się opis błędu.

Jeśli edytujesz schemat, który chcesz włączyć zombie (w menu "Produkt", wybierz "Edytuj schemat"), przejdź do etapu "Uruchom Foo.app" w lewym panelu i "Argumenty "tabulator po prawej stronie. Następnie możesz dodać NSZombieEnabled do sekcji "Zmienne środowiskowe" i ustawić wartość TAK, tak jak w Xcode 3.

W Xcode 4.1 i wyżej, jest też pole wyboru w zakładce "Diagnostyka" "Uruchom" przejdź do "Włącz obiekty zombie".

+0

Dzięki, ale już go włączyłem. – Mithuzz

+0

Przepraszam, właściwie zapomniałem dodać drugą opcję, teraz również ją włączono. Dzięki :) – Mithuzz

+0

Zmieniłem ustawienia tak, jak wspomniano i przetestowano. Znowu mam problem z awarią, ale nie pokazał mi żadnych szczegółów. – Mithuzz

3

Dodaj Exception breakpoint i debugger zatrzyma się na linii, która awarii.

+0

Już to zrobiłem, wskazywało to na inne problemy, ale kiedy wystąpił ten błąd, nic się nie stało. Czy można znaleźć problem w oknie Debug Navigator? – Mithuzz

6

kliknij EditScheme w XCode. następnie ekran zostanie wyświetlony jak poniżej. kliknij Włącz obiekty Zombie. Wyświetli się błąd w dzienniku.

enter image description here

+0

Dziękuję, w rzeczywistości zapomniałem, że opcja tam, umożliwi to i spróbować ponownie. – Mithuzz

+0

Przepraszam, myślę, że Melbourne przedtem tak samo odpowiedziała, więc powinienem przyjąć jego odpowiedź, prawda? Nie martw się, podarowałem ci Upvote i naprawdę doceniam twoją pomoc z dokładnym zrzutem ekranu, było to łatwe do zrozumienia. Dzięki :) – Mithuzz

+0

@Mithuzz. To nie tylko dla Ciebie. Wielu programistów będzie próbowało zrozumieć prawidłowy obraz na ekranie answer.giving, który jest bardziej akceptowalną odpowiedzią na pytania tego typu. musimy dać lepszą drogę nowym programistom. – Suresh

1

Nie jestem pewien, ale czytając rejestrów może pomóc.

Najpierw przejdź do zakładki Wyjątki i "Dodaj wyjątek przerwania", używając znaku + w lewym dolnym rogu. enter image description here

Potem, gdy awarii aplikacji kliknij na "0 objc_exception_throw" pod temat 1 enter image description here

Wreszcie w konsoli wpisać:

  • rejestr odczytany (powinieneś otrzymać listę rejestrów)
  • po $ rax (zwykle wyjątkiem jest "rax")

    (powinieneś zobaczyć wyjście wyjątku na konsoli)

Mam nadzieję, że to pomoże.