Чому мої точки прориву не працюють?


112

У мене встановлені точки перерви, але, здається, Xcode їх ігнорує.


2
ТоварClean допоміг мені
Олександр Бекерт


Мені довелося зробити повний перезапуск з моїм комп’ютером, щоб змусити їх знову працювати, і зараз вони надто баггі. Я використовую xcode 10.2.1.
ламакорн

2
Xcode 11, перезапуск та очищення Xcode не працює, перезапуск Mac не працює. Видаліть додаток на пристрої та відновіть виправлення цієї проблеми. Сподіваюся, що це допоможе комусь
Рандалл Ван

Відповіді:


148

Перш за все, я згодний на 100% з попередніми людьми, які сказали, що ВИМКНЕНО Load Symbols Lazily .

Маю ще дві речі додати.

(Моя перша пропозиція звучить очевидно, але коли я хтось запропонував мені це, моя реакція пішла наступним чином: "давай, будь ласка, ти справді думаєш, що я не знав би краще ...... о.")

  1. Переконайтеся, що ви випадково не встановили "Конфігурація активної збірки" на "Випуск".

  2. У розділі "Цілі" на графічному дереві відображення вашого проекту натисніть правою клавішею миші та зробіть "Отримати інформацію". Шукайте властивість під назвою "Створення символів налагодження" (або подібне) та переконайтесь, що це ПРОВЕРЕНО (він же ВКЛ.). Також ви можете спробувати знайти (також у Target >> Отримати інформацію) властивість під назвою "Формат інформації про налагодження" та встановити її на "Гном із файлом dsym".

У цілі >> Отримати інформацію, яка може вплинути на вас, є ряд інших властивостей. Шукайте такі речі, як оптимізація чи стиснення коду та вимкніть цей матеріал (я припускаю, що ви працюєте в режимі налагодження, так що це не погана порада). Також шукайте такі речі, як символи для зачистки, і переконайтесь, що це також ВИМКНЕНО. Наприклад, для продукту "Налагоджений продукт" слід встановити значення "Ні".


8
У XCode 4.5.2 у мене виникла ця проблема, і виявилося, що я ввімкнув "Оптимізацію часу зв'язку", тому це ще одна річ, щоб перевірити
таксілій

6
Щоб змінити конфігурацію збірки, перейдіть до продукту -> схема -> редагувати схему, у розділі Виконати - інформація. Для мене те, що працювало, було перевірити "Виконавець налагодження" у цьому меню.
Джеффрі нд

2
Викрадення верхньої відповіді, щоб додати, що синтаксис Бізона, здається, є ще однією (екзотичною) причиною, коли точки прориву не працюють (див. Мою відповідь нижче). Сподіваємось, ви заощадите деякий час для наступної людини з цією проблемою.
Дейв

2
Також дуже легко ненароком переключити активацію точки зупинки за допомогою ⌘Y. Тож стежте за цим, діти.
dsgrnt

1
Я спробував пункт №1, і він працював на мене. Дійсно мені допомогли. Отримано.
NSPratik

49

У Xcode 7 для мене працювало:

1) Переконайтесь, що мета -> схема -> Виконати - у режимі налагодження (було випущено)

2) Переконайтесь, що виберіть опцію "Виконавець налагодження", див. Нижче:

введіть тут опис зображення


4
Саме так сталося зі мною, прапорець не було встановлено
anoop4real

Те саме питання для мене. Чи не слід цю опцію включити за замовчуванням (XCode 8.3)? Хіба ми не повинні бути всіми чортами, готовими все-таки налагодити?
dgmz

Працював для мене в Xcode 9.3, було б чудово, якщо ви надасте інше зображення для варіанту 1.
Kazi Abdullah Al Mamun

24

Перейдіть до налаштувань налагодження Xcode. Переконайтесь, що "Завантажити символи ліниво" НЕ вибрано.


7
На жаль, у Xcode 6 не встановлено налаштування "налагодження", і "лінь" не відображається в документації. Зітхнути.
Оскар

1
гаразд, зараз я не можу знайти параметр "Завантажити символи ліниво" у XCode 6
RNA

14

У мене якраз була ця проблема (знову). Після потрійної перевірки "Завантажте символи ліниво" та знімання та відладки прапорів генерації інформації, я зробив наступне:

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

Ви можете виконати те саме завдання у пошуку, клацнувши правою кнопкою / опцією, натисніть на пакет .xcodeproj і вибравши "Показати зміст пакета".

Коли я перезапустив Xcode, усі мої вікна були скинуті до стандартних позицій тощо, але точки прориву спрацювали!


2
Це працює, але він видаляє всі ваші вподобання ... Це слід робити, коли нічого іншого не працювало.
Ремі Дулаеґе

працював на мене, дякую. Цікаво, чому Xcode так смокче. Xcode - найгірша частина програмного забезпечення, яку коли-небудь писав Apple.
Качка

Ого, це 5 років. Важко повірити, що це все ще працює, і що це все-таки питання!
Франк Щебра

Не працювали для мене. У мене працює Xcode 6.01. Тепер, коли я будую, я отримую кілька помилок, що відсутні у файлі. Я повертаю свій код для вирішення.
Native_Mobile_Arch_Dev

Тільки довелося перезапустити Xcode, мій випадок був пов’язаний з версією git при здійсненні комутації даних про стан інтерфейсу користувача xcode.
Хуан Боро

13

Для Xcode 4.x: Перейдіть до продукту> Налагоджуйте робочий процес та зніміть прапорець "Показати демонтаж при налагодженні".

Для Xcode 5.x Goto Debug> Debug Workflow та зніміть прапорець "Показати демонтаж при налагодженні".


11

Інша причина

Встановіть DeploymentPostprocessingNO у BuildSettings - деталі тут

Коротко -

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

введіть тут опис зображення


Після оновлення до XCode 7 цей параметр якимось чином був YESлише у моїх, subprojectа потім точки прориву не працювали subprojects. І після налаштування на NOце було ідеально!
Maheswaran Ravisankar

Це працювало для мене лише після очищення проекту, тому відбудеться повна перебудова.
Ран

8

Дивіться цю публікацію: точки прориву не працюють у Xcode? . Ви можете натиснути "Виконати" замість "Налагодження"; у цьому випадку ваша програма не працює за допомогою gdb, і в цьому випадку ви не можете очікувати, що точки прориву спрацюють!


У Xcode 6.4 тепер існує лише кнопка Run (Виконати), і чи вона виконує конфігурацію налагодження чи ні, залежить від обраних на даний момент параметрів схеми.
користувач2067021

6

Одним із можливих рішень для цього може бути .... перейдіть до продукту> Схема> Редагувати схему> .. У розділі Виконати> інформація> Виконавчий прапорець "Налагодити виконуваний файл".


Цей працював на мене після удару головою 2 дні.
Dileep Perla

рада, що це допомогло.
Соропромо

5

Це було у мене в Xcode 9 на півбуденний день. Нарешті, це була проста настройка налагодження.

Перейдіть налагодження> Налагодження робочого процесу та переконайтесь, що "Завжди показувати розбирання" вимкнено. Просто як це. :(


Це справді працює для мене, дякую
Md.Harish-Uz-Jaman Mridha Raju

5

Для мене рішення з XCode 9.4.1 (не зупинявся на жодній точці розриву):

Під ціллю збирання -> Налаштування збірки -> Рівень оптимізації: Вимкнено з "Оптимізувати для швидкості" -> "Не оптимізувати" (тепер це повільніше, але працює)


5

Що вирішило це в моєму випадку, було досить просто: в Xcode - Product - Clean Build Folder, а потім Product - Run (не кнопка Play Xcode).

(Якщо виникла проблема на Xcode 11 -beta 4 після переходу на тестування одиниць за допомогою натискання кнопки відтворення Xcode довгим натисканням)


4

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

Витративши досить багато часу, зменшивши проблему, я нарешті з'ясував винуватця (для мого коду):

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

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


4

Для Xcode 4:

go Product -> Debug ->  Activate Breakpoints

Дякую! це допомогло. Я збирався опублікувати це сам, мабуть, я якось помилково штовхнув ⌘Y.
Ovi

2

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

Також здається, що Xcode тільки керує операціями точки перерви правильно, якщо ви дієте на точку розриву, коли ви знаходитесь у проекті, що містить вихідний рядок, на якому знаходиться точка перелому.

Якщо я спробую видалити або відключити точки точки перелому через інший проект, дія іноді не набуває чинності, навіть якщо налагоджувач вказує на його наявність. Тож я опинюсь на зламані на інвалідних точках розриву або на (зараз невидимій) точці розриву, яку я видалив раніше.


2

У мене точки прориву не спрацювали, і тоді я зробив Збір / Очищення всіх цілей, щоб вони знову працювали.


2

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

Редагувати: я оновлю, коли зможу підтвердити, що це правда.



2

У XCode 6.3.1 зі мною трапилось те саме. Мені вдалося виправити це:

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

Зробивши цю зміну, я повернув параметр Перемістити параметри точки перемикання назад до проекту, і знімаючи вибір параметра Точки перерви , і досі працює.

Я точно не знаю, чому, але це поверне мої точки проходу.


Дякую! Це також зафіксувало повільну реакцію налагодження журналів
Jim75

2

Для цього, а також для Xcode 6 і вище, переконайтеся, що активована кнопка стану перерви (синя кнопка, що нагадує стрілку):

введіть тут опис зображення


1

У 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

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

Ви можете знайти його під: під Product->Debug Workflow->Show Disassemblyчас налагодження.


1

Ви можете ввімкнути / вимкнути точки прориву у спадному меню введіть тут опис зображення


1

Якщо все інше виходить з ладу, замість точки розриву, ви можете викликати таку функцію:

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

Щоб відновити, вручну встановіть значення нуль, а потім натисніть кнопку відновити.


1

Я спробував усе вищезазначене, але для мене лише один раз деактивація налагоджувальних точок переривання, а потім активація їх спрацювала.


@IshantMrinal Чому це не актуально? Користувач надав відповідь, яка працювала за його сценарієм.
Ноель Відмер

0

Під час встановлення точки перерви клацніть правою кнопкою миші, і вам слід отримати кілька варіантів того, як обробляється точка перерви (журнал змін і продовження, призупинення виконання тощо)

Також переконайтесь, що в налаштуваннях налагодження не вибрано "Завантажити символи ліниво".

(Застосовується до Xcode 3.1, не впевнений у минулій / майбутній версіях)


0

Також переконайтесь, що розповсюдження програми AppStore також не встановлено на пристрої.


0

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


0

Здається, що в точках переривання в Xcode є 3 стани. Якщо натиснути на них, вони пройдуть різні налаштування. Темно-синій колір увімкнено, відтінок сірого кольору відключений, і іноді я бачив блідо-синій колір, який вимагав від мене знову натискати на точку розриву, щоб перейти до темно-синього кольору.

Крім цього, переконайтеся, що ви запускаєте його за допомогою команди налагодження, а не команди run. Це можна зробити, натиснувши варіант + команда + повернення, або опцію Перейти (налагодження) з меню запуску.


0

У мене Xcode 3.2.3 SDK 4.1 Точки прориву будуть випадковими. Я виявив, що якщо ви очистите збірку та використовуєте сенсорну команду під збіркою, вони знову працюють.


0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.