Всегда останавливайтесь в делегате приложения после включения Все точки прерывания исключения
Когда я включаю все контрольные точки исключений, мое приложение всегда останавливается в AppDelegate, но им удается продолжить выполнение программы, но очень раздражающая причина всегда приводит меня к appdelegate. Любые идеи, почему?
Ответ 1
Включить только точки останова Objective-C.
Чтобы увидеть фактический оператор, вызывающий ошибку, добавьте контрольную точку исключения:
Из главного меню Отладка: точки останова: создание точки останова исключений.
Щелкните правой кнопкой мыши точку останова и установите исключение в Objective-C. Это игнорирует другие типы исключений, например, из С++. Существуют части API, которые используют исключения, такие как Core Data (Apple Special).
Добавьте действие: "po $arg1".
Запустите приложение, чтобы получить точку останова, и вы попадете на строку, которая вызывает исключение, и сообщение об ошибке будет находиться в консоли отладчика.
Если вы используете Swift или хотите удалить все исключения, вы можете изменить параметр "Все исключения" для автоматического продолжения после оценки действий. Просто найдите его в навигаторе Breakpoint Navigator и вправо /ctrl нажмите кнопку "Исключительная точка останова", чтобы отредактировать его:
Затем установите флажок "Параметры":
Ответ 3
Исключения в коде С++ распространены и нормальны. Исключительная точка останова ловит каждое поднятое исключение, даже если они обрабатываются правильно. Поэтому, если вы не укажете Obj-C, вы заметите, что выполнение останавливается во многих, казалось бы, случайных местах. Я сталкиваюсь с этим все время с помощью AVAudioPlayer.
Еще одна вещь, на которую нужно обратить внимание - это отсутствие активов. Я наткнулся на этот вопрос у другого аськи, который, похоже, тоже столкнулся с тем же вопросом.