Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何诊断内核保护故障_Iphone_Objective C_Cocoa_Cocoa Touch_Exc Bad Access - Fatal编程技术网

Iphone 如何诊断内核保护故障

Iphone 如何诊断内核保护故障,iphone,objective-c,cocoa,cocoa-touch,exc-bad-access,Iphone,Objective C,Cocoa,Cocoa Touch,Exc Bad Access,我得到了一个有趣的崩溃,我似乎永远无法在模拟器上复制: Exception Type: EXC_BAD_ACCESS (SIGBUS) Exception Codes: KERN_PROTECTION_FAILURE at 0x00000008 Crashed Thread: 0 Thread 0 Crashed: 0 libobjc.A.dylib 0x3212e86c 0x3212c000 + 10348 1 StockTwits

我得到了一个有趣的崩溃,我似乎永远无法在模拟器上复制:

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000008
Crashed Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib                 0x3212e86c 0x3212c000 + 10348
1   StockTwits                      0x00016b06 0x1000 + 88838
2   Foundation                      0x30718422 0x306db000 + 250914
3   Foundation                      0x307183a4 0x306db000 + 250788
4   CFNetwork                       0x30933e74 0x30923000 + 69236
5   CFNetwork                       0x30927b70 0x30923000 + 19312
6   CFNetwork                       0x30927e62 0x30923000 + 20066
7   CFNetwork                       0x30927a60 0x30923000 + 19040
8   CFNetwork                       0x30927a12 0x30923000 + 18962
9   CFNetwork                       0x30927990 0x30923000 + 18832
10  CFNetwork                       0x3092790e 0x30923000 + 18702
11  CoreFoundation                  0x30352a86 0x302e1000 + 465542
12  CoreFoundation                  0x30354768 0x302e1000 + 472936
13  CoreFoundation                  0x30355504 0x302e1000 + 476420
14  CoreFoundation                  0x302fe8e4 0x302e1000 + 121060
15  CoreFoundation                  0x302fe7ec 0x302e1000 + 120812
16  GraphicsServices                0x31a776e8 0x31a74000 + 14056
17  GraphicsServices                0x31a77794 0x31a74000 + 14228
18  UIKit                           0x323272a0 0x32321000 + 25248
19  UIKit                           0x32325e10 0x32321000 + 19984
20  StockTwits                      0x00002fd4 0x1000 + 8148
21  StockTwits                      0x00002fa4 0x1000 + 8100
我启用了NSZombies以及堆栈日志记录。运行静态分析器以确保所有对象都被正确地保留和释放,尽管我感觉它仍然与保留/释放相关


想法?

您必须解除对空指针的引用,除非不会发生此崩溃。静态分析器是一个很好的工具,它可以提示您做错了什么。然而,没有发现错误并不意味着你的程序没有bug。此外,打开僵尸并不总是有帮助。有时候这只是一个简单的小疏忽

模拟器没有显示这个问题的事实并没有说明太多。最终,它是一台具有不同处理器和不同体系结构的不同机器。有时错误代码在一个平台上运行良好,但在另一个平台上崩溃

您应该重新标记堆栈跟踪,并仔细查看它正在崩溃的函数。如果您需要更多帮助,最好在这里发布一些代码


还有一个提示:这些问题通常分布在多种方法上。分析器一次只能看到一个方法。在输入崩溃方法之前,您应该先看看该方法中的对象发生了什么。

您不是在某个地方传递了一个值为8(0x00000008)的int而不是指针吗?您能再解释一下吗?有趣的…更多信息请参见这个问题:最简单的方法是根本不使用优化进行编译。创建包含调试符号的调试配置生成。对于符号化,您可能会在这里找到答案:对于未来的读者,取消引用空指针并不是发生此崩溃的唯一原因,正如Apple的文档
中所述,进程试图访问无效内存,或者试图以内存保护级别不允许的方式访问内存(例如,写入只读内存)。
还显示了由于堆栈溢出而导致的此异常类型。