我有时会收到此崩溃报告:
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
我不明白这个崩溃报告。我也不知道这是什么时候发生的。
有没有办法找到有关此次崩溃的更多信息?
我该如何解决这个问题?
答案 0 :(得分:6)
您需要对崩溃报告进行符号化,该报告会将第0行到第7行中的地址转换为有意义的类,方法和行号。通常Xcode会自动执行此操作,如果您仍然具有导致崩溃的构建的二进制文件。
答案 1 :(得分:1)
SIGSEV错误是当您尝试获取不允许触摸的内存时发送的信号
解决此问题的最佳方法是在每行放置一个断点和跳线,以便找到问题所在的行
或者您也可以放一些调试日志来查看问题
要了解SIGSEV或SEGV_ACCERR的含义,您可以在互联网上搜索更多信息;)
答案 2 :(得分:1)
问题已经过时了,但约翰史密斯的答案还有更好的方法。
目前,最好的方法是使用分析器(在XCode:Product / Profile中)使用相应的模板运行 最有可能你需要使用“Zombies”模板,现在设备上也支持它,不仅仅是在模拟器上。 使用此工具时,您有更大的机会发现错误使用内存。