«нет символа XXX в текущем контексте» для определенных классов при отладке проекта XCode ip * - PullRequest
1 голос
/ 06 сентября 2010

Я случайно получаю эту ошибку и не могу найти способ ее исправить: панель переменных (вверху справа) пуста, а команда gdb "po" не может печатать никакие переменные.

Debugger with no variables

Команда "po" даже не знает о "self": No po either.

Проблема возникает специально для всех методов вMGMinimap класс.Нигде более.Я могу отладить из A и посмотреть self и другие, а затем, как только A войдет в MGMinimap, панель переменных станет пустой, как на картинке выше, и gdb не будет работать вообще.

Временное решение этой проблемы - создать новый класс в XCode с именем, например, MGMinimapNew, скопировать и вставить все данные из .h и .m реального класса в новый класс, переименовав старые файлы классов внапример, MGMinimapOld.m|h, затем переименование нового класса в MGMinimap.m|h.Делая это, все начинает работать снова.Тем не менее все еще ищете реальный ответ.

Обновление в ответ на Роб Нейпир:

  • Выполнить>Синхронизация с отладчиком.Я всегда возлагаю на это большие надежды.Иногда это даже работает.
    • К сожалению, это был не один из таких случаев:)
  • Выберите другой кадр стека, затем снова выберите этот кадр стека.
    • Без изменений
  • Переключение потоков и переключение обратно.
    • Без изменений
  • Step-over.Часто переход к следующей строке синхронизирует вещи обратно.
    • Без изменений

Ответы [ 3 ]

1 голос
/ 07 сентября 2010

Это ошибка Xcode / странность. Попробуйте удалить все ваши точки останова и сделать полную очистку.

Если это не сработает, убедитесь, что ваш компилятор не ускользнул от LLVM.

После установки XCode4 у меня было много всяких проблем, а затем я вернулся к XCode3

0 голосов
/ 06 сентября 2010

Почему? Потому что интеграция XCode / GDB ... ненормальная .... Иногда она просто не знает, где вы находитесь Некоторые вещи, которые вы можете попробовать в порядке увеличения разрушительности:

  • Выполнить> Синхронизировать с отладчиком. Я всегда возлагаю на это большие надежды. Иногда это даже работает.
  • Выберите другой кадр стека, затем снова выберите этот кадр стека.
  • Переключение потоков и переключение обратно.
  • Шаг-за. Часто переход к следующей строке синхронизирует вещи обратно.

Хотелось бы, чтобы была волшебная пуля, которая всегда работала. Иногда GDB просто теряется.

0 голосов
/ 06 сентября 2010

Обычно это означает, что объект, на который вы ссылаетесь, каким-то образом вышел из области видимости.Я бы проверил, что переменная или экземпляр объекта все еще находятся в области видимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...