Отладка исключения в приложении Какао - PullRequest
4 голосов
/ 22 ноября 2008

Я работаю над приложением с NSTextView. Когда я вставляю в него случайные байты (скажем, из скомпилированной C-программы), он отображает бред, как и должен. Однако, когда I -setShowsControlCharacters: YES, то же самое вызывает сбой и выдает следующую ошибку несколько раз:

2008-11-22 00:27:22.671 MyAppName[6119:10b] *** -[NSBigMutableString _getBlockStart:end:contentsEnd:forRange:stopAtLineSeparators:]: Range or index out of bounds

Я создал новый проект только с NSTextView с тем же свойством, и у него нет этой проблемы.

У меня вопрос, как я могу отладить свое приложение, чтобы найти причину ошибки? Я понятия не имею, откуда возникла ошибка. Я не знаком с отладчиком, встроенным в Xcode. Если бы кто-то мог указать мне правильное направление с точки зрения того, как отследить такую ​​ошибку, я был бы очень благодарен. Спасибо.

Ответы [ 2 ]

10 голосов
/ 23 ноября 2008

Еще один набор полезных точек останова, которые устанавливаются при отладке приложений Cocoa: objc_exception_throw и -[NSException raise]. В 10.5 все исключения проходят через objc_exception_throw, но если вы нацелены на Tiger, вы должны установить точку останова на обоих.

Есть больше методов отладки на http://www.cocoadev.com/index.pl?DebuggingTechniques.

4 голосов
/ 22 ноября 2008

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

Я предполагаю, что NSTextView находится во внешнем nib / xib и не создается программно.
Если это так, откройте ваш nib / xib в Интерфейсном Разработчике и щелкните по элементу NSTextView.

Затем нажмите Cmd-5 или Инструменты-> Инспектор соединений

Отсюда вы можете увидеть, какие Outlets / Actions искать в фактическом исходном коде.

Скорее всего, у вас проблемы с манипулированием объектом " Reference Outlet " или функцией " Sent Action ".

Как только вы поймете, какой метод (ы) / переменную (и) вам нужно посмотреть, вы можете открыть исходный код для этих частей в Xcode. Затем вы можете установить точку останова в любой строке, щелкнув по этому номеру строки в левой части окна редактора.

Нажмите Выполнить-> Отладчик . Появится новое окно, нажмите « Run and Go » на панели инструментов этого окна. Ваше приложение должно работать как обычно, пока оно не достигнет точки останова, которую вы установили в исходном коде. когда достигается точка останова, вы можете навести курсор мыши на переменные в вашем коде в нижней половине окна отладчика. Должны появиться текущие значения переменных, что облегчает проверку.

Обычно вы можете получить ту же информацию, используя верхнюю правую панель отладчика для проверки таблицы переменных.

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

Это должно помочь вам начать отладку в Xcode. Это различные виды / использование точек останова и всевозможные дополнительные вещи, которые вы можете делать в Xcode. Для получения дополнительной информации проверьте это удивительное CocoaHeads видео .

Удачи,

Брайан Г.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...