Сейчас я пишу приложение для iOS с Xcode 4.3.2. В большинстве частей моего кода отладка с помощью LLDB работает просто отлично. Однако в какой-то момент я получаю странное сообщение при выполнении моего кода. Когда я наводил курсор на iVar, он говорит
Ошибка [IRForTarget]: не удалось найти косвенный символ ivar Objective-C OBJC_IVAR_$_MyFancyClass.iVar
вместо того, чтобы показывать мне значение. Однако в окне Variables View
я все прекрасно вижу. Пока я не выберу Print Description of...
, то есть, потому что тогда Xcode дает сбой...
Когда я использую GDB, зависание работает, но тип и значения переменной неверны.
Я считаю, что с моим кодом что-то не так, что, в свою очередь, приводит к сбою отладчиков. Тем не менее, код работает нормально. Я бы хотел предоставить пример кода, но класс довольно длинный, и я не могу точно определить, где моя ошибка. Так кто-нибудь сталкивался с подобным поведением?
ОБНОВЛЕНИЕ:На самом деле, кажется, что это происходит везде в моем коде, а не только в некоторых конкретных файлах. Если это поможет, в то время как LLDB показывает вышеуказанное сообщение, GDB всегда показывает объект класса, которому принадлежит iVar, вместо самого iVar. Похоже, что-то не так с управлением памятью.Например, если я скажу что-то вроде
[notificationCenter addObserver:self selector:@selector(foo) name:bar object:objA];
, селектор вызывается, даже если у меня есть
[notificationCenter postNotificationName:bar object:objB];