14

我有时会收到此崩溃报告:

Name: SIGSEGV
Reason: SEGV_ACCERR
Stack Trace:

0 MyApp 0x00070456 0x1000 + 455766
1 MyApp 0x0007a34d 0x1000 + 496461
2 MyApp 0x0007a4f1 0x1000 + 496881
3 MyApp 0x000d31dd 0x1000 + 860637
4 MyApp 0x00067f0f 0x1000 + 421647
5 MyApp 0x0005ad69 0x1000 + 367977
6 MyApp 0x000081e3 0x1000 + 29155
7 MyApp 0x00008ae9 0x1000 + 31465
8 CoreFoundation 0x35a547e4 __invoking___ + 68
9 CoreFoundation 0x359af7b1 -[NSInvocation invoke] + 160
10 Foundation 0x3556268f -[NSInvocationOperation main] + 114
11 Foundation 0x354fb393 -[__NSOperationInternal start] + 862
12 Foundation 0x35564793 __block_global_6 + 102
13 libdispatch.dylib 0x348dec59 _dispatch_call_block_and_release + 12
14 libdispatch.dylib 0x348e1817 _dispatch_worker_thread2 + 258
15 libsystem_c.dylib 0x32e0edfb _pthread_wqthread + 294

我不明白这个崩溃报告。我也不知道这是什么时候发生的。

有没有办法了解有关此崩溃的更多信息?

我该如何解决这个问题?

4

3 回答 3

6

您需要符号化崩溃报告,它将第 0 到第 7 行中的地址转换为有意义的类、方法和行号。通常,如果您仍然拥有导致崩溃的构建二进制文件,Xcode 会自动执行此操作。

于 2012-07-30T09:49:34.627 回答
2

问题很旧,但有比约翰史密斯回答更好的方法。

目前最好的方法是使用分析器(在 XCode:产品/配置文件中)使用相应的模板运行。
很可能您需要使用设备现在也支持的“僵尸”模板:)不仅在模拟器上。使用此工具时,您有更大的机会发现内存的不正确使用。

于 2014-06-13T15:06:34.343 回答
0

SIGSEV 错误是当您尝试获取不允许触摸的内存时发送的信号

解决此问题的最佳方法是在每行放置一个断点和跳转行,以便找到问题所在的行

或者你也可以放一些Debug Logs来看看是不是问题

要了解 SIGSEV 或 SEGV_ACCERR 的含义,您可以在互联网上搜索更多信息;)

于 2012-07-25T10:43:23.350 回答