2013-03-06 14 views
6

Obecnie występują problemy z Xcode debugowanie. Wszystkie ślady stosu pokazują tylko ostatnie dwa wykonane połączenia. Nie można również użyć konsoli lldb. Na przykład prosty unrecognized selector błędu pokazuje tylko ten ślad zalogowaćLLDB stos ślad pokazuje tylko ostatnie 2 połączeń w Xcode

* thread #1: tid = 0x2503, 0x32d2e960 libobjc.A.dylib`objc_exception_throw, stop reason = breakpoint 1.1 
    frame #0: 0x32d2e960 libobjc.A.dylib`objc_exception_throw 
    frame #1: 0x37c4ae06 CoreFoundation`-[NSObject(NSObject) doesNotRecognizeSelector:] + 170 
+0

Mam ten sam problem ... Używam Mac OS X 10.7 i ja już zrobiłem mdimport. we wszystkich folderach symboli. Rozwiązałeś to? –

Odpowiedz

6

spróbuj wydrukować [NSThread callStackSymbols] z debugger, który czasami działa, gdy debugger nie. Tak naprawdę nie dziwi mnie, że

Dodatkowo, moje doświadczenie jest to, że GDB jest znacznie bardziej wiarygodne.

+0

gdb (i 'callStackSymbols') zrobić prostą stosu spacer. lldb sprawdza instrukcję metody, aby określić sposób zapisywania rejestrów i manipulowania stosem. Loudb stackwalk na ramieniu został ulepszony w ciągu ostatniego roku, ale ręczne procedury wysyłki zoptymalizowane pod kątem Obj-C są bardzo trudne do przeprowadzenia w statyczny sposób. Prosty algorytm łańcuchów używanych przez gdb i 'callStackSymbols' również zawiedzie w innych przypadkach, żaden z nich nie będzie działał poprawnie przez cały czas. Odwijanie stosu może być dość trudne. –

+0

@JasonMolenda Jestem prawie pewien, że GDB nie robi naiwnego spaceru na stosie - często nie daje kopii zapasowej, w której działa '+ callStackSymbols'. –

+0

Dobra sztuczka. Dzięki! Szkoda, że ​​nie było mniej kłopotliwej naprawy. :( – Kalle

5

Prosty XCode restart rozwiązało problem. Ale ten błąd nadal się dzieje po pewnym czasie. Zgłoszę błąd na ten temat.

+0

Proste, ale skuteczne. Dziękuję Ci! Miałem ten sam problem. Debugger wyświetli tylko ostatnie dwa elementy śledzenia stosu. Wszystkie wywołania były prostymi statycznymi wywołaniami metod. Restart kodu Xcode rozwiązał problem. –

0

odwijanie dzięki funkcji uruchomieniowych Objective-C może być trudne na ramieniu, zespół jest ręcznie dostrojony i lldb może mieć problemy ze zorientowaniem się, jak rozwijać się obok nich. W tym przypadku wygląda na to, że ma jedną ramę dalej, a potem nie może dostać się dalej.

Powiązane problemy