2013-03-06 2 views
6

В настоящее время существует проблема с отладкой с помощью XCode. Все трассировки стека показывают только два последних выполненных вызова. Невозможно использовать консоль lldb. Например, простой unrecognized selector ошибка показывает только этот след журналТрассировка стека LLDB показывает только последние 2 вызова в 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

У меня такая же проблема ... Я использую mac os X 10.7, и я уже сделал mdimport. во всех папках с символами. Вы решили это? –

ответ

6

Попробуйте распечатать [NSThread callStackSymbols] из отладчика, который иногда работает, когда отладчик этого не делает. Меня не удивляет, что

Кроме того, мой опыт в том, что GDB гораздо надежнее.

+0

gdb (и 'callStackSymbols') делают прямую стековую прогулку. lldb проверяет инструкцию метода для определения того, как регистры сохраняются и манипулирует стеком. За последний год был увеличен объемный ход lldb на руке, но ручные оптимизационные процедуры Obj-C очень трудно анализировать правильно статически. Простой алгоритм последовательных цепочек, используемый gdb и 'callStackSymbols', также будет терпеть неудачу в других случаях, ни один из них не будет работать корректно все время. Снятие стека может быть довольно сложным. –

+0

@JasonMolenda Я почти уверен, что GDB не делает наивных стековую прогулку - часто он не может дать обратную трассировку, где работает '+ callStackSymbols'. –

+0

Nice трюк. Благодаря! Однако желание было менее назойливым. :( – Kalle

5

Простой перезапуск XCode решить эту проблему. Но эта ошибка продолжает происходить через некоторое время позже. Я сообщу об этом об ошибке.

+0

Простой, но эффективный. Спасибо! У меня такая же проблема. Отладчик будет показывать только два последних элемента трассировки стека. Вызовы - это простые простые вызовы статических методов. Рестарт xcode решил его. –

0

Перематывание через функции времени выполнения Objective-C может быть затруднительным на руке, сборка настроена вручную, и lldb может столкнуться с трудностями при определении того, как разматывать их. В этом случае похоже, что он получил один кадр дальше, а затем не мог пройти дальше.

Смежные вопросы