LLDB for Swift:在类型摘要 Python 脚本中访问计算属性或执行函数调用



当我使用 Python 脚本创建自定义类型摘要时,可以使用value.GetChildMemberByName("<child-name>")访问 ivar。但是,这不适用于计算属性或函数。

使用frame variable命令,生成摘要的脚本可以计算当前帧中的表达式(例如value.GetFrame().EvaluateExpression(value.GetName() + ".description")(

但是,这在使用p <some-expression>/expression -- <some-expression>时不起作用,因为没有框架,因此上述语句将无法产生任何结果。

使用p(expression --(时,有没有办法调用函数或计算类型摘要中的计算属性?

您可能要使用SBValue.CreateValueFromExpression而不是框架或目标EvaluateExpression调用数据格式化程序。

SBValues 会记住定义它们的上下文,SBValue.CreateValueFromExpression 将该上下文反馈给表达式计算器。 由于变量格式化程序始终接收它们正在操作的 SBValue,因此 CreateValueFromExpression 允许一种简单的方法将该上下文转发到新表达式。

EvaluateExpression函数在目标和帧上都可用。试试value.GetTarget().EvaluateExpression(...).

最新更新