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

<p>у меня установлены точки останова, но xcode, кажется, игнорирует их.</p>

<p>прежде всего, я согласен на 100% с более ранними людьми, которые сказали, что turn <strong>off</strong> <code>load symbols lazily</code>.</p><p>у меня есть еще две вещи, чтобы добавить.</p><p>(мое первое предложение звучит очевидным, но когда кто-то предложил мне это в первый раз, моя реакция шла по следующему принципу: "давай, пожалуйста, ты действительно думаешь, что я не буду знать лучше ...... о".)</p><ol> <li> <p>убедитесь, что вы случайно не установили "active build configuration" на "release".</p> </li> <li> <p>в разделе "цели" в графическом древовидном отображении вашего проекта щелкните правой кнопкой мыши на цели и выполните "получить информацию". найдите свойство с именем "создать символы отладки" (или аналогичное) и убедитесь, что оно проверено (или включено). кроме того, вы можете попытаться найти (также в target >> get info) свойство с именем "debug information format" и установить для него значение "dwarf with dsym file".</p> </li> </ol><p>в target >> get info есть ряд других свойств, которые могут повлиять на вас. ищите такие вещи, как оптимизация или сжатие кода и выключайте его (я предполагаю, что вы работаете в режиме отладки, так что это неплохой совет). кроме того, ищите такие вещи, как удаление символов и убедитесь, что они также выключены. например, "strip linked product" должен быть установлен на "нет" для цели отладки.</p>

<p>в xcode 7 у меня сработало:</p><p>1) убедитесь, что цель -> схема -> выполнить - находится в режиме отладки (был release)</p><p>2) не забудьте проверить опцию "отладка исполняемого файла", см. ниже:</p><p> <a href="https://i.stack.imgur.com/meypz.png"><img src="https://i.stack.imgur.com/meypz.png" alt="enter image description here"></a> </p>

<p>перейдите в настройки отладки xcode. убедитесь, что "загрузка символов лениво" не выбрана.</p>

<p>у меня была такая же проблема (снова). после тройной проверки "лениво загружать символы" и удаления флагов генерации и отладки информации я сделал следующее:</p><ol> <li>выйти из xcode</li> <li>откройте окно терминала и перейдите в каталог проекта</li> <li>перейдите в каталог .xcodeproj</li> <li>удалить все, кроме файла .pbxproj (у меня были frank.mode1v3 и frank.pbxuser)</li> </ol><p>вы можете выполнить ту же задачу в finder, щелкнув правой кнопкой/опцией на пакете .xcodeproj и выбрав "показать содержимое пакета".</p><p>когда я перезапустил xcode, все мои окна были сброшены в положение по умолчанию и т.д., но точки останова работали!</p>

<p>для xcode 4.x: перейдите в product> debug workflow и снимите флажок "показать разборку при отладке".</p><p>для xcode 5.x перейдите в раздел "отладка"> "рабочий процесс отладки" и снимите флажок "показать разборку при отладке".</p>

<p>посмотрите этот пост: <a href="http://complicatedtechnicalstuff.blogspot.com/2009/11/breakpoints-not-working-in-xcode.html">точки останова не работают в xcode?</a> . возможно, вы нажимаете "run" вместо "debug", в этом случае ваша программа не запускается с помощью gdb, и в этом случае вы не можете ожидать, что точки останова будут работать!</p>

<p>другой причиной</p><p>установите <code>deploymentpostprocessing</code> в no в buildsettings - <a href="https://developer.apple.com/library/mac/documentation/developertools/reference/xcodebuildsettingref/1-build\_setting\_reference/build\_setting\_ref.html#//apple\_ref/doc/uid/tp40003931-ch3-sw53">подробности здесь</a> </p><p>короче -</p><blockquote> <p>активация этого параметра означает, что двоичные файлы должны быть удалены, а для режима файла, владельца и информации о группе должны быть установлены стандартные значения. [deployment\_postprocessing]</p> </blockquote><p> <a href="https://i.stack.imgur.com/hkx1t.png"><img src="https://i.stack.imgur.com/hkx1t.png" alt="enter image description here"></a> </p>

<p>для xcode 4:</p><pre><code>go product -> debug -> activate breakpoints </code></pre>

<p>пришел на эту страницу с той же проблемой (код c в xcode 6 не останавливается на точках останова), и ни одно из вышеперечисленных решений не сработало (проект был практически из коробки, с точки зрения настроек, поэтому у любого из параметров отладчика было мало шансов установить неправильное значение) ...</p><p>потратив довольно много времени на решение проблемы, я, наконец, выяснил виновника (для моего кода):</p><p><strong>xcode (/ llvm) не любит команды препроцессора в стиле bison <code>#line</code>.</strong></p><p>удаление их устранило проблему (отладчик остановился на моих точках останова).</p>

<p>решение для меня с xcode 9.4.1 (не остановилось ни на одной точке останова):</p><p>под build target -> build settings -> optimization level: переключено с "оптимизация по скорости" -> "без оптимизации" (теперь это медленнее, но работает)</p>

<p>это привело меня в xcode 9 на половину разочаровывающего дня. в итоге это была простая настройка отладки.</p><p>зайдите в debug> debug workflow и убедитесь, что "всегда показывать разборку" отключено. просто как тот. :(</p>

<p>я думаю, что проблема может быть несовместимость между версиями устройства и xcode. у меня есть эта проблема при попытке отладки на моем iphone 4s под управлением ios 5.0.1. я все еще использую xcode 3.2.5. я получил символы с телефона, выбрав "использовать это устройство для разработки" в окне "органайзер". этот телефон отказывается от точки останова, однако. мой старый 3gs <strong>будет</strong> точка останова, тот же проект xcode, те же настройки ... просто другое устройство, и он работает под управлением ios 4.0. я предполагаю, что это ошибка xcode в 3.2.5, так как у меня есть символы. перепробовав все решения, опубликованные здесь до сих пор, я решил, что решение моей проблемы состоит в том, чтобы пойти дальше и перейти на xcode 4. возможно, вы не сможете эффективно отладить, если ваш базовый sdk не ниже, чем система, на которой нужно отлаживать. может быть, это очевидно - кто-нибудь может подтвердить?</p><p>правка: я буду обновлять, когда я могу подтвердить, что это правда.</p>

<p>удаление моей папки build решило проблему для меня.</p>

<p>у меня много проблем с точками останова в xcode (2.4.1). я использую проект, который просто содержит другие проекты (например, решение в visual studio). иногда я нахожу, что точки останова не работают вообще, если в начальном проекте не установлена хотя бы одна точка останова (то есть точка, содержащая точку входа для моего кода). если единственные точки останова находятся в проектах "нижнего уровня", они просто игнорируются.</p><p>также кажется, что xcode корректно обрабатывает только операции точки останова, если вы действуете на точку останова, когда находитесь в проекте, который содержит исходную строку, на которой находится точка останова.</p><p>если я пытаюсь удалить или отключить точки останова через другой проект, действие иногда не вступает в силу, даже если отладчик показывает, что оно имело место. поэтому я обнаружу, что ломаюсь на отключенных точках останова или на (теперь невидимой) точке останова, которую я удалил ранее.</p>

<p>мои контрольные точки не работали, а затем сделали build/clean all targets, чтобы они снова заработали.</p>

<p>для этого, а также для xcode 6 и выше убедитесь, что кнопка состояния точки останова активирована (кнопка, похожая на синюю стрелку):</p><p><img src="https://i.stack.imgur.com/xfbyo.png" alt="enter image description here"></p>

<p>это может быть одной из возможных причин того, что это произошло .... перейдите в product> схема> редактировать схему> .. под run> info> проверка исполняемого файла "отладка исполняемого файла".</p>

<p>в xcode 4</p><pre><code>- 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 </code></pre>

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

<p> <img src="https://i.stack.imgur.com/1yucl.png" alt="enter image description here"></p>

<p>я нашел проблему. каким-то образом "<em>показать разборку при отладке</em>" был включен в моем xcode, что создает эту проблему. когда я отключил его, весь мой отладчик остановился в моем исходном коде.</p><p>вы можете найти его в: <code>product->debug workflow->show disassembly</code> при отладке.</p>

<p>если ничего не помогает, вместо точки останова вы можете вызвать следующую функцию:</p><pre><code>void breakpoint(void) { int i=1; #if !\_\_optimize\_\_ printf("code is waiting; hit pause to see.\n"); while(i); #endif } </code></pre><p>для возобновления вручную установите i на ноль, затем нажмите кнопку возобновления.</p>

<p>то же самое произошло со мной в xcode 6.3.1. мне удалось это исправить:</p><ul> <li>переход к <strong>view-> navigators-> show debug navigators</strong></li> <li>щелкните правой кнопкой мыши в <strong>корень проекта -> переместить точки останова</strong> (если выбрана опция user)</li> <li>(я также выбрал опцию <strong>поделиться точками останова</strong>, хотя я не уверен, если это необходимо).</li> </ul><p>после внесения этого изменения я установил <em> параметры перемещения точек останова </em> обратно в проект и отменил выбор <em> точек останова общего доступа </em> вариант, и до сих пор работает.</p><p>я точно не знаю почему, но это возвращает мои контрольные точки.</p>

<p>на xcode 6.4 мне нужно было перезагрузить мой mac.</p><p>(попытка включения/отключения точек останова, перезагрузка устройства ios, перезапуск xcode, удаление файлов точек останова из пакета рабочей области ...)</p>

<p>если вы используете subversion, просто верните файлы вашего проекта (<strong>только</strong>) в последний раз, когда вы знали, что отладчик работал.</p>

<p>вот неясный вопрос, с которым я столкнулся: если вы работаете с разделяемой библиотекой (или плагином), ваши точки останова станут желтыми при запуске, что может привести к разочарованию клавиатуры и уничтожению процесса отладки. ну, не делай этого! символы не будут загружены, пока приложение не загрузит библиотеку, после чего точки останова станут действительными. я столкнулся с этой проблемой с плагином для браузера ... bp были отключены, пока я не перешел на страницу, на которой был создан мой плагин.</p>

<p>это происходит время от времени с проектом ios по крайней мере. чтобы это исправить, мне пришлось перезагрузить устройство ios, выйти из xcode и пересобрать проект.</p>

<p>также убедитесь, что на устройстве не установлен дистрибутив приложения appstore.</p>

<p>если вы перепробовали все основные проверки, проверьте наличие <strong> уровня оптимизации </strong> в настройках проекта и цели. убедитесь, что вы выбрали none для отладки.</p><p> <a href="https://i.stack.imgur.com/i90ra.png"><img src="https://i.stack.imgur.com/i90ra.png" alt="enter image description here"></a> </p>

<p>у меня были проблемы с потерей точек останова xcode при использовании симулятора и установкой "запуск схемы" для "ожидания исполняемого файла". измените это на "запускать автоматически", и контрольные точки возвращаются к жизни.</p>

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

<p>я считаю, что проект также может быть поврежден в отношении точек останова. например, у меня есть проект, который не будет ломаться ни на какие контрольные точки, которые он запомнил в предыдущем сеансе. я впервые написал об этом <a href="http://blog.kleymeyer.com/2007/09/problem-with-breakpoints-in-xcode/">здесь</a> </p>

<p>я столкнулся с той же проблемой, когда хотел отладить веб-плагин, где пользовательским исполняемым файлом был safari 5.1. он работал нормально, пока не обновил мой safari до версии 5.1 с 4.0.5. как только я снова установил safari 4.0.5, все точки останова начали работать без изменения каких-либо настроек xcode.</p>

<p>у меня есть xcode 3.2.3 sdk 4.1. точки останова произойдут случайно. я обнаружил, что если вы очищаете сборку и используете команду touch под сборкой, они снова работают.</p>

<p>другая причина, по которой точки останова могут пожелтеть, заключается в том, что двоичный файл приложения, который вы отлаживаете, был изменен с момента его первого запуска. в моем случае я добавил папку в папку "содержание/ресурсы" приложения после того, как однажды отладил программу. при запуске отладки после добавления папки точки останова становились желтыми и игнорировались. я изменил свою процедуру: я сделал чистку, сборку, добавил папку, затем запустился, и все было хорошо.</p><p>возможно, xcode (или os x) создает и запоминает собственную цифровую подпись приложения (которая была <em>не</em> с цифровой подписью), а затем, чувствуя, что приложение было изменено, отказывается пытаться установить точки останова. делая мои моды перед первым (отладочным) запуском приложения, была сделана цифровая подпись <em>с</em> моими модами.</p><p>все это на os x 10.6.8 с использованием xcode 3.2.2.</p>

<p>только что решил это в <code>xcode 4.2</code>, ничего из вышеперечисленного не помогло. дело было (я не уверен, что на самом деле произошло, но, возможно, это кому-то поможет): мой напарник создал новые конфигурации сборки и обновил проект в svn. в настройках run scheme была настроена старая конфигурация сборки, поэтому для меня были сделаны следующие шаги:</p><ol> <li>продукт -> редактировать схему ...</li> <li>выберите "run% project\_name.app%" (или что-то, что вызывает проблемы)</li> <li>в комбо конфигурации конфигурации выберите эту новую конфигурацию сборки от моего товарища по команде</li> </ol><p>и это все, контрольные точки снова вернулись. надеюсь это поможет.</p>

<p>я немного не сделал xcode, но я рекомендую вам отключить "zerolink" и "загрузить символы lazily"; это решит большинство проблем. в любом случае, zerolink - это мерзость.</p>

<p>кажется, есть 3 состояния для точек останова в xcode. если вы нажмете на них, они пройдут через различные настройки. темно-синий включен, серое отключено, и я иногда видел бледно-синий, который требовал, чтобы я снова нажал на точку останова, чтобы она перешла на темно-синий цвет.</p><p>кроме этого, убедитесь, что вы запускаете его с помощью команды debug, а не команды run. вы можете сделать это, нажав либо option + command + return, либо опцию go (отладка) из меню run.</p>

<p>при установке точки останова щелкните правой кнопкой мыши, и вы получите несколько опций о том, как обрабатывается точка останова (войти в систему и продолжить, приостановить выполнение и т.д.)</p><p>также убедитесь, что "загрузить символы лениво" не выбран в настройках отладки.</p><p>(относится к xcode 3.1, не уверен насчет прошлых/будущих версий)</p>

<p>наличие xcode 5 и 6 gm приводило к тому, что первый терял функциональность точки останова (бета-версии xcode 6 были в порядке).</p><p>я попробовал многие из предложенных методов, но в конце концов сдался, и сейчас я просто использую xcode 6.</p>

<p>вы можете выбрать один параметр в целевом параметре apple компилятор llvm 4.1. секция генерации кода создать символ отладки = да</p>

<p>в моем случае я обнаружил, что контрольные точки были случайно деактивированы. вы можете снова активировать его с помощью <strong>debug-> activate breakpoints [cmd + y].</strong> если вы заметили серые маркеры точек останова вместо обычного синего маркера, это, скорее всего, так.</p><p>как оказалось, вы всегда можете переключать активацию контрольных точек с помощью клавиш cmd + y, возможно, вы нажали эту комбинацию клавиш, не заметив этого. этот отчет основан на xcode 7.2.</p>

<p>в случае <strong> xcode 4 и новее </strong> * <em> загружать символы лениво </em> * вроде бы <strong> упал </strong>. так что смотрите этот пост <a href="http://www.weston-fl.com/blog/?p=2337">нажмите здесь</a> </p><p>простое и подробное объяснение сработало для меня.</p>