Почему мои контрольные точки не работают?

У меня установлены контрольные точки, но Xcode, кажется, игнорирует их.

55 ответов

Решение

Прежде всего, я согласен на 100% с более ранними людьми, которые сказали выключить Load Symbols Lazily,

У меня есть еще две вещи, чтобы добавить.

(Мое первое предложение звучит очевидным, но когда кто-то предложил мне это в первый раз, моя реакция шла по следующему принципу: "давай, пожалуйста, ты действительно думаешь, что я не буду знать лучше...... о".)

  1. Убедитесь, что вы случайно не установили "Active Build Configuration" на "Release".

  2. В разделе "Цели" в графическом древовидном отображении вашего проекта щелкните правой кнопкой мыши на Цели и выполните "Получить информацию". Найдите свойство с именем "Создать символы отладки" (или аналогичное) и убедитесь, что оно ПРОВЕРЕНО (или ВКЛЮЧЕНО). Кроме того, вы можете попробовать найти (также в Target >> Get Info) свойство с именем "Debug Information Format" и установить его в "Dwarf with dsym file".

В Target >> Get Info есть ряд других свойств, которые могут повлиять на вас. Ищите такие вещи, как оптимизация или сжатие кода и выключайте его (я предполагаю, что вы работаете в режиме отладки, так что это не плохой совет). Кроме того, ищите такие вещи, как удаление символов и убедитесь, что они также выключены. Например, "Strip Linked Product" должен быть установлен на "Нет" для цели отладки.

В Xcode 7 у меня сработало:

1) Убедитесь, что цель -> схема -> Выполнить - находится в режиме отладки (был Release)

2) Не забудьте проверить опцию "Отладка исполняемого файла", см. Ниже:

Перейдите в настройки отладки Xcode. Убедитесь, что "Загрузка символов лениво" НЕ выбрана.

У меня была такая же проблема (снова). После тройной проверки "Лениво загружать символы", а также флагов удаления и отладки информации я сделал следующее:

  1. выйти из Xcode
  2. откройте окно терминала и перейдите в каталог проекта
  3. перейдите в каталог.xcodeproj
  4. удалить все, кроме файла.pbxproj (у меня были frank.mode1v3 и frank.pbxuser)

Вы можете выполнить ту же задачу в Finder, щелкнув правой кнопкой / опцией на пакете.xcodeproj и выбрав "Показать содержимое пакета".

Когда я перезапустил Xcode, все мои окна были сброшены в положение по умолчанию и т. Д., Но точки останова работали!

Проблема

  • Фон
    • Xcode: 13.0
      • код: Objective-C
  • Проблема: добавлена ​​точка останова, но не работает

(возможно) Причина и решение

  • Причина : ошибка Xcode
    • Решение : -> Clean Build Folder, затем повторите отладку (несколько раз)
  • Причина : отключена отладка
    • Решение : включить: Product-> Scheme-> Edit Scheme-> Run-> Info
      • Build Configuration установлен в
      • выбрать / выбрать / включить: Debug executable
  • Причина : отключены все точки останова
    • Решение : включите его: панель отладки -> щелкните значок точки останова
  • Причина : оптимизировать отладочную информацию
    • Решение : не оптимизировать
    • нажмите Project -> Build Settings -> Apple Clang - Code Generation -> Optimization Level -> Debug убедитесь, что None[-O0]

Это может быть одной из возможных причин того, что это произошло.... перейдите в Product>Scheme>Edit схема>.. Под Run>info> Проверка исполняемого файла "Отладка исполняемого файла".

Для Xcode 4.x: перейдите в Product>Debug Workflow и снимите флажок "Показать разборку при отладке".

Для Xcode 5.x перейдите в раздел "Отладка"> "Отладка рабочего процесса" и снимите флажок "Показать разборку при отладке".

Другой причиной

Задавать DeploymentPostprocessing НЕТ в BuildSettings - подробности здесь

Короче -

Активация этого параметра означает, что двоичные файлы должны быть удалены, а для режима файла, владельца и информации о группе должны быть заданы стандартные значения. [DEPLOYMENT_POSTPROCESSING]

Смотрите этот пост: Точки останова не работают в Xcode?, Вы можете нажать "Run" вместо "Debug", в этом случае ваша программа не запускается с помощью gdb, и в этом случае вы не можете ожидать, что точки останова будут работать!

Решение для меня с XCode 9.4.1 (не остановилось ни на одной точке останова):

Под build Target -> Build Settings -> Optimization Level: переключено с "Оптимизация по скорости" -> "Без оптимизации" (теперь это медленнее, но работает)

То, что решило это в моем случае, было довольно простым: в Xcode - Product - Clean Build Folder, а затем Product - Run (а не на кнопку Play Xcode).

(Была проблема с Xcode 11 -beta 4 после переключения на модульное тестирование с долгим нажатием кнопки воспроизведения Xcode)

Это привело меня в Xcode 9 на половину разочаровывающего дня. В итоге это была простая настройка отладки.

Зайдите в Debug > Debug Workflow и убедитесь, что "Всегда показывать разборку" отключено. Просто как тот.:(

Пришел на эту страницу с той же проблемой (код C в Xcode 6 не останавливается на точках останова), и ни одно из вышеперечисленных решений не сработало (проект был практически из коробки, с точки зрения настроек, так что маловероятно, чтобы какой-либо из параметров отладчика установить неправильное значение)...

Потратив довольно много времени на решение проблемы, я, наконец, выяснил виновника (для моего кода):

Xcode (/ LLVM) не любит стиль Bison #line команды препроцессора.

Удаление их устранило проблему (отладчик остановился на моих точках останова).

Для Xcode 4:

go Product -> Debug ->  Activate Breakpoints

Я думаю, что проблема может быть несовместимость между версиями устройства и Xcode. У меня есть эта проблема при попытке отладки на моем iPhone 4S под управлением iOS 5.0.1. Я все еще использую Xcode 3.2.5. Я получил символы с телефона, выбрав "использовать это устройство для разработки" в окне "Органайзер". Этот телефон отказывается от точки останова, однако. Мой старый 3GS будет иметь точку останова, тот же проект XCode, те же настройки... просто другое устройство, и он работает под управлением iOS 4.0. Я предполагаю, что это ошибка XCode в 3.2.5, так как у меня есть символы. Перепробовав все решения, опубликованные здесь до сих пор, я решил, что решение моей проблемы состоит в том, чтобы перейти к обновлению до XCode 4. Возможно, вы не сможете эффективно отладить, если ваш базовый SDK не ниже, чем система, на которой нужно отлаживать. Может быть, это очевидно - кто-нибудь может подтвердить?

Изменить: я буду обновлять, когда я могу подтвердить, что это правда.

Удаление моей папки Build решило проблему для меня.

Мои контрольные точки не работали, а затем сделали Build / Clean All Targets, чтобы они снова заработали.

Если ничего не помогает, вместо точки останова вы можете вызвать следующую функцию:

void BreakPoint(void) {
    int i=1;
    #if !__OPTIMIZE__
    printf("Code is waiting; hit pause to see.\n");
    while(i);
    #endif
}

Чтобы возобновить, вручную установите i на ноль, затем нажмите кнопку возобновления.

У меня много проблем с точками останова в Xcode (2.4.1). Я использую проект, который просто содержит другие проекты (например, решение в Visual Studio). Иногда я нахожу, что точки останова не работают вообще, если в начальном проекте не установлена ​​хотя бы одна точка останова (то есть та, которая содержит точку входа для моего кода). Если единственные точки останова находятся в проектах "нижнего уровня", они просто игнорируются.

Также кажется, что XCode корректно обрабатывает только точки останова, если вы действуете на точку останова, когда находитесь в проекте, который содержит исходную строку, на которой находится точка останова.

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

То же самое произошло со мной в XCode 6.3.1. Мне удалось это исправить:

  • Идем в View->Navigators->Show Debug Navigators
  • Щелкните правой кнопкой мыши в корне проекта -> Переместить точки останова (если выбрана опция Пользователь)
  • (Я также выбрал опцию совместного использования точек останова, хотя я не уверен, если это необходимо).

После внесения этого изменения я установил параметры перемещения точек останова обратно в проект и отменил выбор параметра " Поделиться точками останова", и все еще работает.

Я точно не знаю почему, но это возвращает мои контрольные точки.

Для этого, а также для Xcode 6 и выше убедитесь, что кнопка состояния точки останова активирована (кнопка, похожая на синюю стрелку):

Я перепробовал все вышеперечисленное, но для меня только один раз отключил точки останова отладки, а затем активировал их.

Я нашел проблему. Каким-то образом "Показать разборку при отладке" был включен в моем XCode, что создает эту проблему. Когда я отключил его, весь мой отладчик остановился в моем исходном коде.

Вы можете найти его под: Product->Debug Workflow->Show Disassembly при отладке.

Я столкнулся с такой проблемой, и после большого количества потраченного времени я понял, что другой разработчик создал папку, используя специальные символы, после того, как переименованные точки останова папки снова работают.

Вы можете активировать / деактивировать точки останова в выпадающем меню

В Xcode 4

- Product menu > Manage Schemes
- Select the scheme thats having debugging problems (if only one choose that)
- Click Edit button at bottom
- Edit Scheme dialog appears
- in left panel click on Run APPNAME.app
- on Right hand panel make sure youre on INFO tab
- look for drop down DEBUGGER:
- someone had set this to None
- set to LLDB if this is your preferred debugger
- can also change BUILD CONFIGURATION drop down to Debug 
-      but I have other targets set to AdHoc which debug fine once Debugger is set

В моем случае точки останова отключались сами по себе, потому что функция, в которую я их поместил, была закрытой , недоступной и никогда не вызывалась. Так что проверяйте уровень доступа

У меня были проблемы с потерей точек останова Xcode при использовании симулятора и установкой "Запуск схемы" для "ожидания исполняемого файла". Измените это на "запускать автоматически", и контрольные точки возвращаются к жизни.

Если вы перепробовали все основные проверки, проверьте уровень оптимизации в настройках проекта и цели. убедитесь, что вы выбрали None для отладки.

Я столкнулся с той же проблемой, когда хотел отладить веб-плагин, где пользовательским исполняемым файлом был Safari 5.1. Он работал нормально, пока не обновил мой Safari до версии 5.1 с 4.0.5. После того, как я снова установил Safari 4.0.5, все контрольные точки начали работать без изменения каких-либо настроек XCode.

Другие вопросы по тегам