Подтвердить что ты не робот

Lldb странная ошибка

Я использую xCode 4.3.1, и как только я хочу использовать lldb, я вряд ли получаю отладочную информацию, но получаю вместо этого следующий результат, опираясь на простое свойство NSMutableDictionary:

(lldb) po _keywordCache
error: instance method 'delegate' has incompatible result types in different translation units ('objc_object *' vs. 'id')
error: instance method 'delegate' has incompatible result types in different translation units ('objc_object *' vs. 'id')
note: instance method 'delegate' also declared here
note: declared here with type 'id'
note: instance method 'delegate' also declared here
note: declared here with type 'id'
error: 2 errors parsing expression

Переключение на gdb всегда дает правильные результаты.
Любая идея?

4b9b3361

Ответ 1

Источником проблемы в моем случае было то, что здесь рассматриваемое свойство "делегировать" объявляется как тонко различный тип в переменной экземпляра и объявлении свойства. В моем случае тип переменной экземпляра был id, а объявление свойства было id<SomeProtocol>.

Я расскажу об этом как об ошибке для Apple, так как это не должно приводить к сбою в проверке переменных. Исправление состоит в том, чтобы убедиться, что переменная экземпляра и объявление свойства описывают "делегировать" как точно такой же тип. Надеюсь, это поможет!

Ответ 2

Я знаю, что это уже поздно, но столкнулся с этим на Xcode 6, необходимо сделать папку Clean Build (удерживать нажатой кнопку при выборе очистки).

Ответ 3

У меня такая же проблема в Xcode 7.3 (7D1002) со вчерашнего дня. До этого он работал отлично в течение нескольких недель. В моем случае сейчас даже простая "po someString" не работает:
error: метод экземпляра 'URLEncodedString' имеет несовместимые типы результатов в разных единицах перевода ('void *' vs. 'NSString *')
error: метод экземпляра 'URLDecodedString' имеет несовместимые типы результатов в разных единицах перевода ('void *' vs. 'NSString *')
note: метод экземпляра 'URLEncodedString' также объявлен здесь
note: метод экземпляра 'URLDecodedString' также объявлен здесь
ошибка: 2 ошибки разбора выражения

Вещи, которые я пробовал:

  • выйти и перезапустить Xcode7 и симулятор (они оба выполнялись с нескольких дней без перезапуска)
  • Xcode: Product- > Очистить и (удерживая ключ опции) Очистить папку сборки
  • Удалить ~/Library/Предпочтения/com.apple.dt.Xcode.plist
  • Удалить ~/Library/Разработчик/Xcode/DerivedData/*
  • Удалить ~/Library/Разработчик/Xcode/iOS DeviceSupport/*
  • Установите последнюю версию OS X El Capitan Update 10.11.4

но все это не помогло. Все еще не может ни p ни po строк в отладчике.

У меня все еще есть старый Xcode 6 на моем Mac (переименован и удален до установки Xcode 7, а затем снова добавлен в/Приложения). И это все еще работает, я могу ввести "po someString" в отладчик, и он печатает строку в журнале отладки. Но Xcode 7 не...

Я нашел обходное решение для локальных переменных (хотя эта проблема иная):
http://lists.apple.com/archives/xcode-users/2014/May/msg00088.html
ctrl-клик по переменной в списке локальных переменных и выберите "описание печати"
Печать описания someString:
Ipad

который помогает немного, но не может печатать более сложные команды.

Ответ 4

У меня также была эта ошибка, для меня это действительно не имело ничего плохого в коде. Все, что я сделал, это нажать кнопку справа от кнопки "Переключить глобальную точку останова" на консоли.

It is the blue arrow shaped button.
Это синяя стрелочная кнопка.