2013-03-22 38 views
0

我在崩溃记者中看到了很多这些崩溃,但我不知道可能是什么原因造成的。iOS崩溃:无法访问内存位置

我不能让它在本地重现。

Exception Type: SIGSEGV 
Exception Codes: SEGV_ACCERR at 0x70000008 
Crashed Thread: 0 

Thread 0 Crashed: 
0 libobjc.A.dylib      0x3ba9f5b0 _objc_msgSend + 16 
1 UIKit        0x35a73313 -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1311 
2 UIKit        0x35a8a7cf -[UITableView layoutSubviews] + 207 
3 UIKit        0x35a46803 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 259 
4 QuartzCore       0x357f0d8b -[CALayer layoutSublayers] + 215 
5 QuartzCore       0x357f0929 CA::Layer::layout_if_needed(CA::Transaction*) + 461 
6 QuartzCore       0x357f185d CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 17 
7 QuartzCore       0x357f1243 CA::Context::commit_transaction(CA::Transaction*) + 239 
8 QuartzCore       0x357f1051 CA::Transaction::commit() + 317 
9 QuartzCore       0x357f0eb1 CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 61 
10 CoreFoundation      0x33c106cd __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 21 
11 CoreFoundation      0x33c0e9c1 __CFRunLoopDoObservers + 277 
12 CoreFoundation      0x33c0ed17 __CFRunLoopRun + 743 
13 CoreFoundation      0x33b81ebd _CFRunLoopRunSpecific + 357 
14 CoreFoundation      0x33b81d49 _CFRunLoopRunInMode + 105 
15 GraphicsServices     0x377362eb _GSEventRunModal + 75 
16 UIKit        0x35a97301 _UIApplicationMain + 1121 
17 Our App Name      0x00011d83 main (main.m:21) 
  • 崩溃报告已symbolicated
  • 我知道这是UITableView的尝试更新。
  • 我知道这是试图访问内存的表视图,它不允许访问。
  • 我不知道它是什么表格。它可以是应用程序中的任何一个。

如果您有关于更多调试信息的想法会很棒。


编辑:

这是在生产应用中发生的。我不能得到这个在调试模式本地重现。

回答

0

结果显示动画中存在一个错误,当包含的表格视图滚动时,重复的动画不能正确取消。自修复失败后,没有在崩溃报告中看到这一点。

2

去编辑计划>运行>诊断>启用卫队的malloc &启用僵尸对象

enter image description here

这应该给你的下一个崩溃的更多信息!我有一个类似的经验,我正在使用的库在它使用的缓冲区之外编辑了一点。它很少坠毁,但Guard Malloc立即发现它。即使崩溃只发生在AD Hoc发行版中,从来没有使用调试器。如果在发送消息之前内存得到处理,NSZombies将会有所帮助。但是,NSZombies只会在崩溃的时候有所帮助。

+0

这将是伟大的,但我不能在本地重现它。这只发生在应用商店,当我无法打开守卫或僵尸。 – SkylarSch 2013-03-22 18:35:21

+0

在我的情况下,它总是一个同事设备坠毁。我也无法在当地生产。如果内存地址被破坏,但你的设备永远不会尝试使用它,那么你可能永远不会(或一旦在一个蓝色的月亮)能够重现。尽管我没有死机,Guard Malloc仍然能够发现我的错误。试试你的源码:) – Kibitz503 2013-03-22 18:37:42