加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Xcode – 中断异常,但没有可用的符号

发布时间:2020-12-14 17:22:34 所属栏目:百科 来源:网络整理
导读:我需要帮助找出在LLDB中获取有用信息所必需的神奇咒语. 我有一些奇怪的行为,我正在尝试调试,我可以可靠地重现该问题,但我还不了解其根本原因.我注意到抛出异常,所以我向Xcode添加了一个异常断点. 例外: CoreData: error: Serious application error. An exc
我需要帮助找出在LLDB中获取有用信息所必需的神奇咒语.

我有一些奇怪的行为,我正在尝试调试,我可以可靠地重现该问题,但我还不了解其根本原因.我注意到抛出异常,所以我向Xcode添加了一个异常断点.

例外:

CoreData: error: Serious application error. An exception was caught
from the delegate of NSFetchedResultsController during a call to
-controllerDidChangeContent:. *** -[__NSArrayM objectAtIndex:]: index 2 beyond bounds for empty array with userInfo (null)

所以,随着我的断点到位,我得到以下堆栈跟踪:

这看起来非常有用!对于可重复使用的标题视图,看起来UICollectionViewFlowLayout正在发生一些困难…现在我只需要……哦.废话.等待.什么?

如何检查使用越界索引调用的堆栈跟踪的第1帧中的数组?我可以po<一些内存地址>在控制台检查它?当选择第11 – 1帧时,我无法在LLDB控制台中使用帧变量(from here).

我读这个堆栈跟踪的方式是:

>(第14帧)获取的结果控制器已选择托管对象上下文更改,并调用它的委托
>(第13帧)FRC委托是FHMemberDirectory的一个实例,它将消息-memberDirectoryDidChangeContent:completion:发送到视图控制器FHMemberDirectoryViewController,它是UICollectionViewController的子类.
>(第12帧)视图控制器调用-performBatchUpdates:completion:on它的UICollectionView实例
>(第10-1帧)私人Apple的东西碰巧尝试在屏幕上布局集合视图;我认为!

…如果我错过了一些明显的东西,请告诉我!这个问题是关于调试的,我希望另一组眼睛或更多的专业知识可以启发我.

对于我未经训练的眼睛,这似乎是一个埋在Apple代码中的错误,但我仍然需要找到解决它的方法.我的问题的主旨是理解如何从不受我直接控制的代码中从LLDB控制台获取有用信息.

解决方法

从我的实验和研究中,答案是:

With LLDB alone,you cannot get useful symbols or memory addresses to inspect.

但是,您可以使用Objective-C运行时来调整方法实现并跳转到深层堆栈跟踪,从而为您提供参数和返回值的句柄.

现在我可以访问第3帧和第5帧传递的参数!

(事实证明…… usingData的论点是一个私有的Apple类.我能够更多地了解here类,但没有什么超级有用.最后我提交了radar并要求帮助解决DTS的问题).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读