gpt4 book ai didi

python - 使用 lldb 和 python 捕获 `UIImageView` 属性

转载 作者:行者123 更新时间:2023-11-29 01:44:53 25 4
gpt4 key购买 nike

我正在尝试使用 LLDB 和 python 来调试我的 View 层次结构。当我在 XCode 中设置断点并探索帧值时:

expr @import UIKit
po self.imageView.frame

LLDB 能够执行如下所示的命令:

enter image description here

当我尝试像这样使用 python 脚本复制相同的命令时:

import lldb

lldb.debugger.HandleCommand('expr @import UIKit')
expression = 'self.imageView.frame'
frame = lldb.debugger.GetSelectedTarget().GetProcess().GetSelectedThread().GetSelectedFrame()
expr_options = lldb.SBExpressionOptions()
language = frame.GetCompileUnit().GetLanguage()
expr_options.SetLanguage(language)
value = frame.EvaluateExpression(expression, expr_options)

表达式 value.GetValue() 的值为 None

如何使用 lldb python 脚本获取 self.imageView.frame 的值,以便我可以在 Python 中对该值进行进一步计算?

enter image description here

最佳答案

frame 是聚合类型(结构或类对象)并且聚合类型没有值,因为它们不是任何特定的单一事物...

它们有摘要 - 聚合类型内容的漂亮打印文本再现 - 您可以使用 SBValue::GetSummary 访问它。请注意,这些摘要由 lldb 的 Data Formatter 机制提供,该机制也用于普通变量打印,例如提供您在 po 结果中看到的内容。因此,如果您只想模拟打印类型,您会从命令行获取,摘要就是您想要的。

表示聚合类型的 SBValue 也有成员 - 这是值的“真实”内容。在 SBValue 的说法中,这些被称为 child ,您可以通过 SBValue API 访问它们(例如 SBValue::GetNumChildren & SBValue::GetChildAtIndex。)

关于python - 使用 lldb 和 python 捕获 `UIImageView` 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32037564/

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