it-swarm-ru.tech

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

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

93
AlanKley

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

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

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

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

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

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

138
pestophagous

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

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

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

enter image description here

29
Oded Regev

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

25
AlanKley

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

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

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

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

14
Frank Szczerba

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

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

12
bneupaane

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

8
Soong

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

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

Короче -

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

enter image description here

7
gbk

Для Xcode 4:

go Product -> Debug ->  Activate Breakpoints
4
evya

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

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

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

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

4
Dave

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

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

4
Strinder

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

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

3
Gaz Long

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

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

2
Gavin

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

2
Jack Bellis

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

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

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

2
Charles Anderson

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

2
snowytree

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

enter image description here

2
df611

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

1
Soropromo

В 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
1
brian.clear

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

1
user8032120

 enter image description here

1
Stan

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

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

1
Perumal

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

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

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

1
William Jockusch

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

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

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

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

1
Osk

На Xcode 6.4 мне нужно было перезагрузить мой Mac.

(Попытка включения/отключения точек останова, перезагрузка устройства iOS, перезапуск Xcode, удаление файлов точек останова из пакета рабочей области ...)

0
user2067021

Если вы используете Subversion, просто верните файлы вашего проекта (только) в последний раз, когда вы знали, что отладчик работал.

0
stephen

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

0
Tim Keating

Это происходит время от времени с проектом iOS по крайней мере. Чтобы это исправить, мне пришлось перезагрузить устройство iOS, выйти из Xcode и пересобрать проект.

0
kakyo

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

0
dan

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

enter image description here

0
Abhijith Purushothaman

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

0
Richard

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

0
davidcann

Я считаю, что проект также может быть поврежден в отношении точек останова. Например, у меня есть проект, который НЕ БУДЕТ ломаться ни на какие контрольные точки, которые он запомнил в предыдущем сеансе. Я впервые написал об этом здесь

0
AlanKley

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

0
user917691

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

0
Damon McGIll

Другая причина, по которой точки останова могут пожелтеть, заключается в том, что двоичный файл приложения, который вы отлаживаете, был изменен с момента его первого запуска. В моем случае я добавил папку в папку "Содержание/ресурсы" приложения после того, как однажды отладил программу. При запуске отладки после добавления папки точки останова становились желтыми и игнорировались. Я изменил свою процедуру: я сделал чистку, сборку, добавил папку, затем запустился, и все было хорошо.

Возможно, Xcode (или OS X) создает и запоминает собственную цифровую подпись приложения (которая была не с цифровой подписью), а затем, чувствуя, что приложение было изменено, отказывается пытаться установить точки останова. Делая мои моды перед первым (отладочным) запуском приложения, была сделана цифровая подпись с моими модами.

Все это на OS X 10.6.8 с использованием Xcode 3.2.2.

0
user532477

Только что решил это в XCode 4.2, ничего из вышеперечисленного не помогло. Дело было (я не уверен, что на самом деле произошло, но, возможно, это кому-то поможет): мой напарник создал новые конфигурации сборки и обновил проект в SVN. В настройках Run Scheme была настроена старая конфигурация сборки, поэтому для меня были сделаны следующие шаги:

  1. Продукт -> Редактировать схему ...
  2. Выберите "Run% project_name.app%" (или что-то, что вызывает проблемы)
  3. В комбо конфигурации конфигурации выберите эту новую конфигурацию сборки от моего товарища по команде

И это все, контрольные точки снова вернулись. Надеюсь это поможет.

0
MANIAK_dobrii

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

0
duane

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

Кроме этого, убедитесь, что вы запускаете его с помощью команды debug, а не команды run. Вы можете сделать это, нажав либо Option + Command + Return, либо опцию Go (отладка) из меню Run.

0
crackity_jones

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

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

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

0
Scott Swezey

Наличие Xcode 5 и 6 GM приводило к тому, что первый терял функциональность точки останова (бета-версии Xcode 6 были в порядке).

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

0
Rivera

Вы можете выбрать один параметр в целевом параметре Apple Компилятор LLVM 4.1. Секция генерации кода Создать символ отладки = ДА

0
Pushan

В моем случае я обнаружил, что контрольные точки были случайно деактивированы. Вы можете снова активировать его с помощью Debug-> Activate Breakpoints [Cmd + Y]. Если вы заметили серые маркеры точек останова вместо обычного синего маркера, это, скорее всего, так.

Как оказалось, вы всегда можете переключать активацию контрольных точек с помощью клавиш Cmd + Y, возможно, вы нажали эту комбинацию клавиш, не заметив этого. Этот отчет основан на Xcode 7.2.

0
Benny Khoo

В случае Xcode 4 и новее * Загружать символы лениво * вроде бы упал . Так что смотрите этот пост нажмите здесь

Простое и подробное объяснение сработало для меня.

0
Ajit Satarkar