2015-03-13 1 views
0

Я новичок в Xcode и Objective-C. В отличие от исключений Java Java, я не нашел точного номера строки, где произошло исключение, хотя имя функции можно узнать из журнала сбоев. Ниже приведен аварийный журнал:Точная линия для исключения в Xcode

2014-07-28 17:44:53.814 ExampleApp[82720:70b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil' 
*** First throw call stack: 
(
0 CoreFoundation      0x034b25e4 __exceptionPreprocess + 180 
1 libobjc.A.dylib      0x028bc8b6 objc_exception_throw + 44 
2 CoreFoundation      0x03464bcc -[__NSArrayM insertObject:atIndex:] + 844 
3 CoreFoundation      0x03464870 -[__NSArrayM addObject:] + 64 
4 ExampleApp       0x0017f99e +[ReportGenerator prepareReportList:] + 5486 
5 ExampleApp       0x0017db99 +[ReportGenerator generateReportContent:viewController:] + 73 
6 ExampleApp       0x0017b682 +[ReportGenerator generateReport:viewController:style:] + 322 
7 ExampleApp       0x000a68fd -[ReportsViewController showReport] + 189 
8 libobjc.A.dylib      0x028ce81f -[NSObject performSelector:withObject:] + 70 
9 Foundation       0x01fa29d8 __NSThreadPerformPerform + 285 
10 CoreFoundation      0x0343b83f __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15 
11 CoreFoundation      0x0343b1cb __CFRunLoopDoSources0 + 235 
12 CoreFoundation      0x0345829e __CFRunLoopRun + 910 
13 CoreFoundation      0x03457ac3 CFRunLoopRunSpecific + 467 
14 CoreFoundation      0x034578db CFRunLoopRunInMode + 123 
15 GraphicsServices     0x046949e2 GSEventRunModal + 192 
16 GraphicsServices     0x04694809 GSEventRun + 104 
17 UIKit        0x010bbd3b UIApplicationMain + 1225 
18 ExampleApp       0x0011679d main + 125 
19 libdyld.dylib      0x0300a701 start + 1)libc++abi.dylib: terminating with uncaught exception of type NSException 

ответ

1

Вы можете добавить точку останова для всех исключений.

От Apple Docs

  1. В левом нижнем углу навигатора точек останова, нажмите кнопку Добавить.

  2. Выберите Добавить контрольную точку исключения.

  3. В всплывающем меню исключений, выберите тип исключения, на котором вы хотите, чтобы остановить выполнение:

    • все. Останавливает все исключения.
    • Объектив-C. Останавливает исключения Objective-C. C++. Останавливает исключения C++.
    • Чтобы остановить конкретное исключение C++, укажите имя исключения.
  4. Выберите фазу процесса обработки исключений, в котором вы хотите остановить выполнение программы.

  5. Нажмите Готово.

+0

Я согласен, но если я получаю отчет о сбое от тестера, и я хочу посмотреть номер строки, где произошел сбой - могу ли я знать? есть некоторые цифры против каждой строки в отчете Crash (см. вышеприведенный вложенный аварийный журнал) - какую информацию они предоставляют? –

0

Аварийное происшествие происходит в вашем методе +[ReportGenerator prepareReportList:]. В частности, при попытке добавить объект к массиву.

Только нулевой объект. Вот почему журнал начинается с объект не может быть nil.

(Примечание:.. Как вы пришли из мира Java исключений, не делают ошибку, думая, что исключения ObjC предназначены, чтобы быть пойманным и извлекают из них не являются)

Смежные вопросы