我需要帮助找出在LLDB中获取有用信息所必需的神奇咒语。
我有一些奇怪的行为,我正在尝试调试,我可以可靠地重现该问题,但我还不了解其根本原因。我注意到有一个异常被抛出,所以我向Xcode添加了一个异常断点。
例外:
CoreData:错误:严重的应用程序错误。抓住了一个例外 在调用期间来自NSFetchedResultsController的委托 -controllerDidChangeContent :. *** - [__ NSArrayM objectAtIndex:]:索引2超出带有userInfo的空数组的边界(null)
因此,在我的断点到位后,我得到以下堆栈跟踪:
这看起来非常有帮助!对于可重复使用的标题视图,看起来UICollectionViewFlowLayout正在发生一些困难...现在我只需要......哦。废话。等待。什么?
如何检查使用越界索引调用的堆栈跟踪的第1帧中的数组?我可以在控制台中po <some memory address>
进行检查吗?选择第11 - 1帧时,我无法在LLDB控制台中使用frame variable
。
我读取此堆栈跟踪的方式是:
FHMemberDirectory
的一个实例,将消息-memberDirectoryDidChangeContent:completion:
发送给视图控制器FHMemberDirectoryViewController
,它是一个子类UICollectionViewController
-performBatchUpdates:completion:
...如果我错过了一些明显的东西,请告诉我!这个问题是关于调试的,我希望另一组眼睛或更多的专业知识可以启发我。
对于我未经训练的眼睛,这似乎是一个埋在Apple代码中的错误,但我仍然需要找到解决它的方法。我的问题的主旨是理解如何从不受我直接控制的代码中从LLDB控制台获取有用的信息。