0

我收到了无法解释的崩溃日志。我四处寻找,似乎SIGSEGV与记忆有关。但就我而言,除了堆栈跟踪中的之外,我自己的代码一无所有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 次。视图控制器对服务器进行多次调用以加载帖子、评论和图像以及个人资料图片。打开此视图控制器时执行的所有代码可能超过 2000 行代码(不包括此代码中使用的 RestKit 和 SBWebImage 库)。我担心在这里发布该代码不会帮助任何人。

4

2 回答 2

0

花时间寻找崩溃原因的最简单和有用的方法是查看您的代码并专注于 UIKit 具有指向您代码的委托的地方。例如,我发现这种事情最常出现的地方是UITableView. 这些问题很难追踪的原因是它们可能只发生在内存不足的情况下或一些非常难以重现的不常见的 UI 条件下。最好只进行代码审查,并确保设置为指向您的类的委托在您自己的对象析构函数中设置回 nil。如果您有许多开发人员,通常最好处理一些更高级别的抽象,例如在整个项目中使用的通用表和单元格类,而不是让每个开发人员编写 UITableView 并犯错误,例如忘记取消委托很难找到。

于 2013-06-19T06:41:25.357 回答
0

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

#include <stdlib.h>  

int main(void)
{
char p = NULL; / p 是一个指向 char 的指针,它初始化指向“nowhere”*/
* p = 'x'; /* 尝试将字符 'x' 保存在 'no address' 中*/
return 0;
}

我希望这可以帮助某人。

于 2013-08-06T13:23:28.043 回答