У меня установлены точки останова, но Xcode игнорирует их.
Почему не работают точки останова Xcode?
Ответы (50)
Прежде всего, я на 100% согласен с предыдущими людьми, которые сказали выключить Load Symbols Lazily
.
Мне нужно добавить еще две вещи.
(Мое первое предложение кажется очевидным, но в первый раз, когда мне его предложили, моя реакция была такой: «давай, пожалуйста, ты правда думаешь, что я не знаю лучше ... о.»)
Убедитесь, что вы случайно не установили «Active Build Configuration» на «Release».
В разделе «Цели» в графическом дереве вашего проекта щелкните правой кнопкой мыши цель и выберите «Получить информацию». Найдите свойство с именем «Generate Debug Symbols» (или подобное) и убедитесь, что оно ПРОВЕРЕНО (также известно, ON). Кроме того, вы можете попробовать найти (также в Target >> Get Info) свойство под названием «Debug Information Format» и установить для него значение «Dwarf with dsym file».
В разделе «Цель >> Получить информацию» есть ряд других свойств, которые могут повлиять на вас. Найдите такие вещи, как оптимизация или сжатие кода, и выключите эти вещи (я предполагаю, что вы работаете в режиме отладки, так что это неплохой совет). Кроме того, обратите внимание на такие вещи, как символы снятия изоляции, и убедитесь, что он также выключен. Например, для параметра «Удалить связанный продукт» должно быть установлено значение «Нет» для цели отладки.
В Xcode 7 у меня сработало:
Убедитесь, что
Target > Scheme > Run
- находится в режиме отладки (был Release)Обязательно установите флажок Отладка исполняемого файла:
Перейдите в настройки отладки Xcode. Убедитесь, что НЕ выбран параметр «Загружать символы лениво».
У меня была такая же проблема (снова). После тройной проверки «Лениво загружать символы» и удаления флагов генерации отладочной информации я сделал следующее:
- выйти из Xcode
- откройте окно терминала и перейдите в каталог проекта
- cd в каталог .xcodeproj
- удалите все, кроме файла .pbxproj (у меня были frank.mode1v3 и frank.pbxuser)
Вы можете выполнить ту же задачу в Finder, щелкнув правой кнопкой мыши пакет .xcodeproj и выбрав «Показать содержимое пакета».
Когда я перезапустил Xcode, все мои окна были сброшены в положение по умолчанию и т.д., но точки останова работали!
Для Xcode 4.x: перейдите в раздел Продукт> Рабочий процесс отладки и снимите флажок «Показывать разборку при отладке».
Для Xcode 5.x перейдите к «Отладка»> «Рабочий процесс отладки» и снимите флажок «Показывать разборку при отладке».
Еще одна причина
Установите DeploymentPostprocessing
на NO в BuildSettings - подробности здесь
Суммируя -
Активация этого параметра указывает на то, что двоичные файлы должны быть удалены, а для информации о режиме файла, владельце и группе должны быть установлены стандартные значения. [DEPLOYMENT_POSTPROCESSING]
YES
только в моем subproject
, а затем точки останова не работали в subprojects
. И после установки на NO
все было идеально!
- person Maheswaran Ravisankar; 17.02.2016
Одним из возможных решений для этого может быть .... перейдите в Продукт> Схема> Изменить схему> .. В разделе «Выполнить»> «Информация»> «Исполняемый файл» установите флажок «Отладка исполняемого файла».
См. Это сообщение: Точки останова не работают в Xcode?. Возможно, вы нажимаете «Выполнить» вместо «Отладка», и в этом случае ваша программа не запускается с помощью gdb, и в этом случае вы не можете ожидать, что точки останова сработают!
Решение для меня с XCode 9.4.1 (не остановилось ни на одной точке останова):
В разделе «Цель сборки» -> «Параметры сборки» -> «Уровень оптимизации»: переключено с «Оптимизировать по скорости» -> «Без оптимизации» (теперь работает медленнее, но работает)
Это заставило меня работать в Xcode 9 на пол-разочарований. В итоге это была простая настройка отладки.
Перейдите в раздел «Отладка»> «Рабочий процесс отладки» и убедитесь, что параметр «Всегда показывать разборку» отключен. Просто как тот. :(
То, что решило это в моем случае, было довольно простым, в Xcode - Product - Clean Build Folder, за которым следует Product - Run (а не кнопка Play Xcode).
(Была проблема с Xcode 11 -beta 4 после переключения на модульное тестирование с долгим нажатием кнопки воспроизведения Xcode)
Пришел на эту страницу с той же проблемой (код C в Xcode 6 не останавливается на точках останова), и ни одно из вышеперечисленных решений не сработало (проект был практически из коробки, с точки зрения настроек, поэтому мало шансов, что какие-либо настройки отладчика будут установить неправильное значение) ...
Потратив некоторое время на устранение проблемы, я наконец выяснил виновника (для моего кода):
Xcode (/ LLVM) не любит команды препроцессора #line
в стиле Bison.
Их удаление устранило проблему (отладчик остановился на моих точках останова).
Для Xcode 4:
go Product -> Debug -> Activate Breakpoints
У меня много проблем с точками останова в Xcode (2.4.1). Я использую проект, который просто содержит другие проекты (например, решение в Visual Studio). Иногда я замечаю, что точки останова вообще не работают, если в стартовом проекте не установлена хотя бы одна точка останова (то есть та, которая содержит точку входа для моего кода). Если единственные точки останова находятся в проектах «нижнего уровня», они просто игнорируются.
Также кажется, что Xcode правильно обрабатывает операции с точкой останова, только если вы действуете на точку останова, когда находитесь в проекте, который содержит исходную строку, на которой установлена точка останова.
Если я попытаюсь удалить или отключить точки останова через другой проект, действие иногда не вступает в силу, даже если отладчик указывает, что это так. Так что я обнаружу, что нарушаю отключенные точки останова или (теперь невидимые) точки останова, которые я удалил ранее.
У меня не работали точки останова, а затем я выполнил Build / Clean All Targets, чтобы они снова заработали.
Думаю, проблема может заключаться в несовместимости версий устройства и Xcode. У меня возникает эта проблема при попытке отладки на моем iPhone 4S под управлением iOS 5.0.1. Я все еще использую Xcode 3.2.5. Я получил символы с телефона, выбрав «использовать это устройство для разработки» в окне «Органайзер». Однако этот телефон не поддерживает точку останова. У моего старого 3GS будет точка останова, тот же проект Xcode, те же настройки ... просто другое устройство, работающее под управлением iOS 4.0. Я предполагаю, что это ошибка Xcode в 3.2.5, поскольку у меня есть символы. Перепробовав все решения, опубликованные здесь до сих пор, я решил, что решение моей проблемы состоит в том, чтобы продолжить и перейти на XCode 4. Возможно, вы не сможете эффективно отлаживать, если ваш базовый SDK не будет по крайней мере таким же высоким, как и система, на которой выполняется отладка. Может быть, это очевидно - может кто-нибудь подтвердить?
Изменить: я обновлю, когда смогу подтвердить, что это правда.
Удаление моей папки Build решило проблему для меня.
Если ничего не помогает, вместо точки останова можно вызвать следующую функцию:
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 6 и выше убедитесь, что кнопка состояния точки останова активирована (кнопка в виде синей стрелки):
В 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
при отладке.
Вы можете активировать / деактивировать точки останова в раскрывающемся меню
Я пробовал все вышеперечисленное, но для меня сработало только одно отключение точек останова отладки, а затем их активация.
При установке точки останова щелкните правой кнопкой мыши, и вы должны получить несколько вариантов того, как обрабатывается точка останова (переменные журнала и продолжить, приостановить выполнение и т. Д.)
Также убедитесь, что в настройках отладки не выбран параметр «Загружать символы лениво».
(Относится к Xcode 3.1, не уверен в прошлых / будущих версиях)
Также убедитесь, что на устройстве не установлен дистрибутив приложения из магазина AppStore.
Еще одна вещь, которую следует проверить, - это то, что если у вас есть файл plist «Entitlements» для вашего режима отладки (возможно, потому что вы делаете что-то с Keychain), убедитесь, что в файле plist есть строка «get-task-allow» = YES. Без него отладка и логирование будут нарушены.
Похоже, что для точек останова в Xcode есть 3 состояния. Если вы нажмете на них, они перейдут к другим настройкам. Темно-синий включен, серый цвет отключен, и я иногда видел бледно-синий цвет, который требовал, чтобы я снова щелкнул точку останова, чтобы она перешла к темно-синему цвету.
Кроме этого, убедитесь, что вы запускаете его с помощью команды отладки, а не команды запуска. Вы можете сделать это, нажав option + command + return или выбрав опцию Go (отладка) в меню запуска.
У меня есть Xcode 3.2.3 SDK 4.1. Точки останова не работают случайным образом. Я обнаружил, что если вы очистите сборку и используете команду touch под сборкой, они снова заработают.
Вот непонятная проблема, с которой я столкнулся: если вы работаете с общей библиотекой (или плагином), ваши точки останова станут желтыми при запуске, что может привести к разочарованию в клавиатуре и прерыванию процесса отладки. Что ж, не делай этого! Символы не будут загружены, пока приложение не загрузит библиотеку, после чего точки останова станут действительными. Я столкнулся с этой проблемой с плагином браузера ... BP были отключены, пока я не перешел на страницу, на которой был создан мой плагин.
Я столкнулся с той же проблемой, когда хотел отладить веб-плагин, в котором пользовательский исполняемый файл был Safari 5.1. Он работал нормально, пока не обновил мой Safari до 5.1 с 4.0.5. Как только я снова установил Safari 4.0.5, все точки останова начали работать без изменения каких-либо настроек Xcode.
Я немного не работал с Xcode, но рекомендую отключить «Zerolink» и «Загружать символы лениво»; это решит большинство проблем. В любом случае Zerolink - это мерзость.
Я считаю, что проект также может быть поврежден в отношении точек останова. Например, у меня есть проект, который НЕ БУДЕТ ломаться ни на каких точках останова, которые он помнит из предыдущего сеанса. Я впервые написал об этом здесь
Если вы используете Subversion, просто верните файлы проекта (только) к тому моменту, когда вы знали, что отладчик работал в последний раз.
Просто решил это в XCode 4.2
, ничего из вышеперечисленного не помогло. Дело в том (я не уверен, что на самом деле произошло, но, возможно, это кому-то поможет): мой товарищ по команде создал новые конфигурации сборки и обновил проект в SVN. У меня была старая конфигурация сборки, настроенная в настройках схемы запуска, поэтому шаги для меня были:
- Продукт -> Изменить схему ...
- Выберите «Запустить% project_name.app%» (или другой вариант, вызывающий проблему).
- В комбо конфигурации сборки выберите эту новую конфигурацию сборки от моего товарища по команде
И все, точки останова снова вернулись. Надеюсь это поможет.
Другая причина, по которой точки останова могут стать желтыми, заключается в том, что отлаживаемый двоичный файл приложения был изменен с момента первого запуска. В моем случае я добавил папку в папку Contents / Resources приложения после того, как отладил программу один раз. Во время отладки после добавления папки точки останова стали желтыми и игнорировались. Я изменил свою процедуру: я сделал чистку, сборку, добавил папку, затем запустил, и все было хорошо.
Возможно, Xcode (или OS X) создает и запоминает свою собственную цифровую подпись приложения (которая была без цифровой подписи), а затем, чувствуя, что приложение было изменено, отказывается пытаться установить точки останова. Создав мои моды перед первым (отладочным) запуском приложения, цифровая подпись была сделана с моими модами.
Все это на OS X 10.6.8 с использованием Xcode 3.2.2.
В случае Xcode 4 и более поздних версий * лениво загружать символы * кажется отброшенным. Поэтому обратитесь к этому сообщению, нажмите здесь
У меня сработало простое и подробное объяснение.
Вы можете проверить один параметр в целевом параметре Apple LLVM Compiler 4.1 Раздел генерации кода Создать символ отладки = ДА
По крайней мере, время от времени это происходит с проектом iOS. Чтобы исправить это, мне пришлось перезагрузить устройство iOS, выйти из Xcode и пересобрать проект.
Наличие Xcode 5 и 6 GM привело к тому, что первый потерял функциональность точки останова (бета-версии Xcode 6 были в порядке).
Я пробовал многие из предложенных методов, но в конце концов сдался и сейчас использую только Xcode 6.
В Xcode 6.4 мне нужно было перезагрузить Mac.
(Пытался включить / отключить точки останова, перезагрузить устройство iOS, перезапустить Xcode, удалить файлы точек останова из пакета рабочей области ...)
У меня были проблемы с потерей точек останова Xcode при использовании симулятора и настройке запуска схемы на «ожидание исполняемого файла». Измените это на «запускать автоматически», и точки останова вернутся к жизни.
В моем случае я обнаружил, что точки останова были случайно деактивированы. Вы можете повторно активировать его снова через Отладка-> Активировать точки останова [Cmd + Y]. Если вы заметили серые маркеры точки останова вместо обычного синего маркера, скорее всего, это так.
Как оказалось, вы всегда можете переключать активацию точек останова с помощью клавиш Cmd + Y, возможно, вы нажали эту комбинацию клавиш, не заметив этого. Этот отчет основан на Xcode 7.2.
Что попробовать:
1) перезапустите xcode 2) выберите другой симулятор - в моем случае 3) перезагрузите Mac.
если ничего из этого не работает. затем посмотрите настройки проекта. (что минимально возможное.)
У меня возникла эта проблема, когда я обновил свой xCode до версии 11.0 (11A420a). Чтобы решить эту проблему, я установил дополнительный симулятор версии 12.2 и обновил версию своего iPhone до 13.1. Теперь как на симуляторе iOs, так и на моем устройстве достигаются точки останова.
В моем случае я заменял существующую сборку магазина приложений своей сборкой, я удалил ее, и теперь она работает.
если вы используете Xcode версии 11.1 (11A1027), убедитесь, что вы не используете учетные данные магазина приложений (профили обеспечения), потому что в этом случае будет установлена сборка, и ни один журнал или отладчик не будут работать, мне потребовалось чертовски много времени, чтобы понять это вне, обновленный Xcode изменился. теперь сборка устанавливается на устройство без предупреждения.
У меня Xcode версии 4.6.3, и точки останова никогда не работали в подгруппах включенных проектов. Проект будет компилироваться и работать нормально; он даже подключается к отладчику и соответствующим образом выводит вывод NSLog.
Проблема была связана с моими путями поиска заголовков. Некоторые из них установили «рекурсивный» вместо «нерекурсивного» по умолчанию. Изменение их всех на «нерекурсивные» и обновление всего связанного импорта соответствующим образом устранило проблему.
У меня была аналогичная проблема. Я переустановил xcode. это решило мою проблему