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

问题描述 投票:2回答:1

当我使用Python脚本创建一个自定义类型摘要时,可以使用以下方法访问ivars。value.GetChildMemberByName("<child-name>"). 然而,这对计算的属性或函数不起作用。

有了 frame variable 命令,生成摘要的脚本可以对当前帧中的表达式进行评估(如 value.GetFrame().EvaluateExpression(value.GetName() + ".description"))

但是,当使用 p <some-expression>expression -- <some-expression> 因为没有框架,所以上述语句将无法产生任何结果。

有没有办法在类型摘要中调用函数或评估计算出的属性,当使用 p (expression --)?

swift lldb
1个回答
1
投票

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


2
投票

你可能什么使用SBValue.CreateValueFromExpression而不是框架或目标EvaluateExpression调用的数据格式化。

SBValues记住了它们被定义的上下文,而SBValue.CreateValueFromExpression将该上下文反馈给表达式评估器。 由于Variable formatters总是接收它们所作用的SBValue,CreateValueFromExpression允许一种简单的方法将该上下文转发到新的表达式。

© www.soinside.com 2019 - 2024. All rights reserved.