什么会导致这个SIGSEGV错误?

我收到了一个我无法解释的崩溃日志。 我search了一下,似乎SIGSEGV与内存有关。 但在我的情况下,除了stacktrace中的main.m以外,没有任何自己的代码。 而且它似乎没有象征任何系统库。

迄今为止的这次事故只发生在一台iPhone上。 在其他手机上,我还没有能够重现它。 现在我完全被卡住了,不知道要继续下去,所以如果有人看到类似这样的事情,那么听到他们的问题和解决方法是很好的。

崩溃日志:

 Incident Identifier: TODO CrashReporter Key: TODO Hardware Model: iPhone4,1 OS Version: iPhone OS 6.1.3 (10B329) Report Version: 104 Exception Type: SIGSEGV Exception Codes: SEGV_ACCERR at 0x41fd5903 Crashed Thread: 0 Thread 0 Crashed: 0 libobjc.A.dylib 0x3b0b9564 0x3b0b6000 + 13668 1 libobjc.A.dylib 0x3b0bb1d7 0x3b0b6000 + 20951 2 CoreFoundation 0x33396605 0x332d4000 + 796165 3 CoreFoundation 0x3339635d 0x332d4000 + 795485 4 libobjc.A.dylib 0x3b0bea65 0x3b0b6000 + 35429 5 libc++abi.dylib 0x3ab0b07b 0x3ab0a000 + 4219 6 libc++abi.dylib 0x3ab0b114 0x3ab0a000 + 4372 7 libc++abi.dylib 0x3ab0c599 0x3ab0a000 + 9625 8 libobjc.A.dylib 0x3b0be9d1 0x3b0b6000 + 35281 9 CoreFoundation 0x332dcf21 0x332d4000 + 36641 10 CoreFoundation 0x332dcd49 0x332d4000 + 36169 11 GraphicsServices 0x36eb52eb 0x36eb0000 + 21227 12 UIKit 0x351f2301 0x3519b000 + 357121 13 Stylbar 0x0007109f main (main.m:21) 

5月3日编辑:

崩溃日志是由用户发送的。 不幸的是我不能重现这个问题,这就是为什么我很难弄清楚这个崩溃日志出了什么问题。

当打开某个视图控制器时,对同一个用户来说似乎已经连续发生了大约15次。 视图控制器可以对服务器进行多次调用,以加载post,评论,图片和个人资料图片。 当这个视图控制器打开时,所有执行的代码可能超过2000行代码(不包括在此代码中使用的RestKit和SBWebImage库)。 在这里发布代码不会帮助任何人,我害怕。

花时间寻找崩溃原因的最简单有效的方法是查看代码,并将注意力集中在UIKit拥有一个指向代码的委托的地方。 例如,我发现这种事情最常见的地方就是UITableView 。 这些问题难以追查的原因是,它们可能只发生在内存不足的情况下,或者在一些非常难以复制的非常规UI情况下发生。 最好只做一个代码审查,并确保被设置为指向你的类的委托在你自己的对象析构函数中被设置为零。 如果你有很多开发人员,那么在一个更高层次的抽象(比如在整个项目中使用的通用表和单元类)上工作,往往比每个开发人员编写一个UITableView并犯错忘记忘记委托很难find。

SIGSEGV是当应用程序尝试访问不存在的内存地址或某个已经保留给另一个程序的地址时发生的问题。 我现在对应用程序有同样的问题,但我必须检查我的代码才能更好地解决问题。 这种问题的一个线索可能是相当于这个(维基百科中find)的东西:

 #include <stdlib.h> 

int main(void)
{
char p = NULL; / p是指向char初始化poiting到“无处”* /
* p ='x'; / *尝试在'无地址'中保存char'x'* /
返回0;
}

我希望这可以帮助别人。