Xcode中异常的确切行

时间:2015-03-13 06:50:27

标签: ios objective-c xcode

我是Xcode和Objective-C的新手。与Android Java异常不同,虽然可以从崩溃日志中获知函数名称,但我没有找到发生异常的确切行号。以下是崩溃日志:

    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

2 个答案:

答案 0 :(得分:1)

您可以添加断点以停止所有例外。

来自Apple Docs

  1. 在断点导航器的左下角,单击“添加”按钮。

  2. 选择添加例外断点。

  3. 在“异常”弹出菜单中,选择要停止执行的异常类型:

    • 全部。停止所有例外情况。
    • Objective-C的。停止Objective-C异常。 C ++。停止C ++异常。
    • 要停止特定的C ++异常,请指定例外名称。
  4. 选择您希望程序执行停止的异常处理过程的阶段。

  5. 点击完成。

答案 1 :(得分:0)

崩溃发生在+[ReportGenerator prepareReportList:]方法中。特别是,在尝试将对象添加到数组时。

只是,对象是零。这就是为什么日志以对象开头不能为

(注意:当你来自Java异常的世界时,不要错误地认为ObjC异常被设计为被捕获并从中恢复。它们不是。)