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

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

概述我需要帮助找出在LLDB中获取有用信息所必需的神奇咒语. 我有一些奇怪的行为,我正在尝试调试,我可以可靠地重现该问题,但我还不了解其根本原因.我注意到抛出异常,所以我向Xcode添加了一个异常断点. 例外: CoreData: error: Serious application error. An exception was caught from the delegate of NSFetch 我需要帮助找出在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的问题).

总结

以上是内存溢出为你收集整理的Xcode – 中断异常,但没有可用的符号全部内容,希望文章能够帮你解决Xcode – 中断异常,但没有可用的符号所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1004735.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存