gpt4 book ai didi

python - Xcode:通过 LLDB 脚本或其他方式显示 Apple 框架类的属性

转载 作者:行者123 更新时间:2023-11-28 18:44:12 24 4
gpt4 key购买 nike

通过各种资源,我发现您可以在 LLDB 中创建自定义描述甚至自定义对象摘要。我还知道我可以执行“添加表达式”以显示调试器对我们隐藏的 Apple 框架类的属性值。

我想要的是显示框架类对象,就好像它有源代码一样。

一张图片胜于千言万语......我目前所拥有的:


enter image description here


如您所见,我在范围内有一个名为 _labelSKLabelNode。我按照教程 here 设法通过 Python 脚本在 SKNode 旁边添加了自定义摘要字符串(“这些是单词”)和 here .

我还可以看到 _label.fontName_label.text 但这只是因为我右键单击并为每个属性手动执行了“添加表达式”。

我的问题:

  1. 是否可以(如果可以的话如何)通过 Python LLDB 脚本将对象的属性添加到其 TreeView 中?我想要的是要扩展的 _label 对象,然后始终显示其 fontNametext and other properties就像我通过手动添加表达式所做的那样。或者换句话说:它应该表现得好像该类有完整的源代码。

  2. 或者:有没有一种方法可以从脚本运行“添加表达式”,以便我可以创建一个可以快速添加多个表达式的别名?也许我可以添加相关对象作为引用,例如 command addCustomExpressionsWithObject _label

我也接受替代解决方案。例如,如果我可以为每个 SK*Node 类编写代理类,并以某种方式让 LLDB 显示节点对应代理类的内容,那也可以。无论以何种方式完成工作,最好是以自动化的方式(一旦实现)。


一般来说,让 LLDB 调试器显示 Apple 框架中类的(已记录!)属性有多难?

特别是对于 Sprite Kit,我们得不到关于任何 SK*Node 对象的任何信息,我不敢相信这并没有像我一样困扰使用其他 Apple 框架的其他开发人员。我希望有一种方法可以“修复”这个问题,但我能找到的少量信息让我觉得这要么不可能,要么我疯了想要查看有关 Apple 类对象的更多详细信息。

PS:是的,我还研究并定制了 Xcode 5.1 的 QuickLook 功能。我创建了一个 SpriteKit+QuickLook repository with QuickLook/debugDescriptions对于某些 Sprite Kit 类,它仍然不能令人满意,因为它仅用作完整的类转储(不过总比没有好)。

最佳答案

如果您可以运行一个返回这些属性值的表达式,您可以向您的 SKLabelNode 添加一个合成子提供程序,该提供程序具有将这些属性中的每一个作为 LabelNode 本身的子项进行评估的结果

有关所有这些的更多详细信息,请访问 LLDB 官方网站:http://lldb.llvm.org/varformats.html

然而,请注意:现在无论何时您在 Xcode 中停止,无论您的程序状态多么损坏,LLDB 都会尝试运行这些表达式。在理想情况下,这不会导致调试器崩溃,但如果这些属性不只是读取某些字段,它肯定会在你的下层造成奇怪的副作用

另请注意,性能不会令人兴奋。在涉及 SKLabelNode 的每一站或每一步,LLDB 将运行代码来计算这些属性的值(假设您的 SKLabelNode 已展开,并且子节点可见,即)

tl;dr 调试器默认不显示这些属性是有原因的 - 如果您真的关心,请创建一个运行适当表达式的合成子提供程序

关于python - Xcode:通过 LLDB 脚本或其他方式显示 Apple 框架类的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22384425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com