【问题标题】:how to make a lldb type synthetic with origin fields included?如何使包含原始字段的 lldb 类型合成?
【发布时间】:2020-07-11 11:41:55
【问题描述】:

有时我只是想在类型的子视图中添加一些额外的字段,但是如果我编写一个常规类型合成类,它只会显示我新添加的字段,它如何自动包含这些原始字段而无需重新- 添加它们?

【问题讨论】:

    标签: types lldb synthetic


    【解决方案1】:

    没有“输入合成”选项来增加当前的子集。请随时使用http://bugs.llvm.org为此编写增强请求。

    现在,您必须手动添加所有子项。由于合成子提供程序是 Python 类,因此创建一个仅报告所有子项的“回声”提供程序类应该不难。保持这一点,然后每次您想为某种类型添加一些字段时,创建一个派生自“echo”提供程序的提供程序,并将新字段添加到它上面。

    【讨论】:

    • 我可以在没有合成的情况下显示单个 SBValue 吗?我只想自己添加一个raw 成员
    • 我不确定你在问什么。 SBValue.GetNonSyntheticValue 获取一个 SBValue,它可以让您访问该值的原始子代。
    • 是的,SBValue.GetNonSyntheticValue 为我提供了原始子代以进行编程访问,但是当我将 NonSyntheticValue 设置为 SyntheticValue 的子成员时,它也会在调试器 GUI 中显示为合成的。我想知道是否有什么设置应该显示为原始?
    • 我认为您需要获取 NonSyntheticValue 并将其子项一一添加到 SyntheticValue 中。那么你就不会进入合成子提供者的递归应用程序......
    猜你喜欢
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    相关资源
    最近更新 更多