Почему мои точки останова не работают?

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

30 ответов


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

Мне нужно добавить еще две вещи.

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

  2. В разделе " Цели "в графическом дереве отображения вашего проекта щелкните правой кнопкой мыши на цели и сделайте" получить информацию."Найдите свойство с именем "Generate Debug Symbols" (или подобное) и убедитесь, что это проверено (aka ON). Кроме того, вы можете попробовать найти (также в Target >> Get Info) свойство под названием "формат отладочной информации" и установить его в "Dwarf with dsym file."

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


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


в Xcode 7 то, что сработало для меня, было:

1) Убедитесь, что target - > scheme - > Run - находится в режиме отладки (был выпущен)

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

enter image description here


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

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

вы можете выполнить ту же задачу в искатель right / option-щелчок по кнопке .xcodeproj комплект и комплектация "показать содержимое пакета".

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


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

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


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


другая причина

Set DeploymentPostprocessing нет в BuildSettings - подробности здесь

короче -

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

enter image description here


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

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

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

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


Для Xcode 4:

go Product -> Debug ->  Activate Breakpoints

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

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

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


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

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


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


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

enter image description here


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

В разделе цель сборки - > настройки сборки - > уровень оптимизации: Переключено с "оптимизировать для скорости" - > " нет оптимизации "(теперь это медленнее, но работает)


У меня были мои точки останова не работают, а затем сделали Build / Clean все цели, чтобы заставить их работать снова.


В 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, который создает эту проблему. Когда я отключил его, весь мой отладчик остановился в моем исходном коде.

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


вы можете активировать / деактивировать точки останова в раскрывающемся меню enter image description here


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

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

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


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

  • собирается Вид - > Навигаторы - >Показать Навигаторы Отладки
  • щелкните правой кнопкой мыши в корень проекта - > переместить точки останова (если выбран параметр пользователя)
  • (Я также выбрал опцию поделиться останова, хотя я не уверен, если это необходимо).

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

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


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

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


при настройке точки останова щелкните правой кнопкой мыши, и вы должны получить несколько вариантов о том, как обрабатывается точка останова (log vars и continue, pause execution и т. д.)

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

(относится к Xcode 3.1, не уверен в прошлых/будущих версиях)


также убедитесь, что дистрибутив AppStore приложения также не установлен на устройстве.


еще одна вещь, чтобы проверить, что если у вас есть файл plist" права "для вашего режима отладки (возможно, потому, что вы делаете вещи с Keychain), убедитесь, что файл plist имеет строку" get-task-allow " = YES. Без него отладка и ведение журнала будут нарушены.


для точек останова в Xcode существует 3 состояния. Если вы нажмете на них, они будут проходить через различные настройки. Темно-синий включен, серый отключен, и я видел бледно-синий иногда, что потребовало от меня снова нажать на точку останова, чтобы заставить ее перейти на темно-синий цвет.

кроме этого убедитесь, что вы запускаете его с помощью команды debug, а не команды run. Вы можете сделать это, нажав option + command + return или Go (debug) опция из меню Выполнить.


У меня есть Xcode 3.2.3 SDK 4.1 точки останова будут сбой в случайном порядке. Я нашел, если вы очистите сборку и используете команду touch под сборкой, они снова работают.


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


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


Я немного не сделал Xcode, но я рекомендую отключить "Zerolink" и "загружать символы лениво"; это исправит большинство проблем. В любом случае, Zerolink-это мерзость.


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