2013-02-21 15 views
11

Próbuję poprawić działanie Xcode. Mam punkt przerwania AllExceptions włączony. Kiedy moje app ulega awarii, widzę to:Debugowanie niezatapionego wyjątku w Xcode

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]' 
*** First throw call stack: 
(0xbb8052 0x209cd0a 0xba4db8 0x2255f2 0xc2439 0x12a5e0f 0x12a6589 0x146bfb1 0x147617c 0x12938e1 0x1290602 0x129b211 0x129b23f 0xc16a6 0x138a4c 0x138852 0x14d0e39 0x14d0143 0x14d13cf 0x14d3a31 0x14d398c 0x14cc3e7 0x1234812 0x1234ba2 0x121b384 0x120eaa9 0x28d3fa9 0xb8c1c5 0xaf1022 0xaef90a 0xaeedb4 0xaeeccb 0x28d2879 0x28d293e 0x120ca9b 0x265c 0x25c5) 
terminate called throwing an exception(lldb) 

Na LHS, kiedy patrzę na różnych wątków, nie widzę niczego, co naprawdę ma sens. Widzę niektóre rzeczy CFRunLoop, ale nie widzę żadnych "normalnych" nazw metod, takich jak metody delegatów/źródeł danych UITableView lub moje własne metody. Zastanawiam się, czy istnieje bardziej informacyjny ślad stosu zamiast heksów, gdy moja aplikacja się zawiesza. Wiem, że mogę ustawić punkty przerwania w każdym miejscu, do którego uzyskuję dostęp do tablicy. Myślę, że mam problem z tym, że po prostu próbuję mieć tabelę w stylu akordeonu z naszym konkretnym źródłem danych, ale zastanawiałem się, czy było szybsze sposób, patrząc na coś użytecznego w Xcode. Dzięki!

+0

Wyszukaj wszystkie pętle wprowadzone w kodzie i sprawdź, czy wywołujesz nasz indeks. masz macierz ma tylko jeden obiekt i wywołujesz tablicę [1] –

+0

Jak moje doświadczenie, myślę, że jest jakieś narzędzie w kodzie Xcode może ci w tym pomóc. Jeśli uruchomisz na urządzeniu, możesz zobaczyć dziennik z Organizatora i tam może ci się bardziej przydać Info –

Odpowiedz

40

w Xcode,

  1. przejść do punktu przerwania nawigatora na lewym panelu.
  2. Kliknij "+" u dołu.
  3. Wybierz opcję "Dodaj wyjątek Przerwanie ..."
  4. Pozwól na domyślne wybory i kliknij "Gotowe".

Ponownie uruchom aplikację i sprawdź, czy wykonanie zatrzymuje się w wierszu powodującym ten wyjątek.

+4

Powiedzmy, że masz 1000 obsługiwanych wyjątków i chcesz znaleźć ten niezatłoczony wyjątek, to nie pomaga bardzo ... – hfossli

+1

działa dla celu c i nie działa dla szybkiego –