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 всегда дает правильные результаты.
Есть идеи?


person Koen    schedule 16.04.2012    source источник
comment
Пока нет предложений, но я просто хочу добавить, что у меня такая же проблема.   -  person danielpunkass    schedule 19.04.2012
comment
В настоящее время я вижу это с Xcode 5.1.1, когда я набираю expr tableView.translatesAutoresizingMaskIntoConstraints в отладчике: он говорит error: instance method 'undoManager' has incompatible result types ...   -  person Drux    schedule 07.07.2014


Ответы (4)


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

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

person danielpunkass    schedule 19.04.2012
comment
У тебя есть открытый радар, который я могу обмануть? Это меня тоже беспокоило. - person Ben Scheirman; 20.04.2012
comment
Привет, Бен. В итоге я не сообщил об этом, потому что в моих тестах с последними инструментами в Mountain Lion это, похоже, было исправлено. - person danielpunkass; 26.04.2012
comment
Я вижу это прямо сейчас с последним горным львом и Xcode. Это в RestKit, когда (например) свойство связано с идентификатором iVar, но свойство является NSObject * - person Rog; 08.06.2012

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

person migs647    schedule 23.09.2014

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

Что я пробовал:

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

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

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

Я нашел обходной путь для локальных переменных (хотя эта проблема отличается) здесь:
http://lists.apple.com/archives/xcode-users/2014/May/msg00088.html
щелкните, удерживая клавишу Ctrl, на переменной в списке локальных переменных и выберите «печатать описание».
    Вывод описания некоторой строки:
    ipad

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

person user8030    schedule 03.05.2016

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

Это кнопка в виде синей стрелки.
Это синяя кнопка в форме стрелки.

person user3597140    schedule 02.05.2014
comment
Где эта кнопка? Можете ли вы предоставить скриншот? - person abbood; 10.07.2014
comment
Это кнопка для разрешения точек останова. Он полностью отделен от проблемы. - person Matteo Gobbi; 03.09.2014