我有一些来自库的具有不透明数据类型的C ++类。 Xcode不理解它们,因此无法在变量检查器中显示它们。我为lldb编写了Python脚本,它可以正确分解这些不透明类型并返回合成子类。我有一个Python类OpaqVector_syntheticChildren,它实现了get_child_at_index(),num_children()等等。
例如,在程序在Xcode的断点处暂停时,在lldb提示符下: (lldb)帧变量sarr (OpaqueVector)sarr = { [0] = 1 [1] = 2 [2] = 3 }
然而,在变量检查器中,sarr显示粉红色的'S'以显示它是一个结构,并且没有摘要或扩展箭头。我可以右键单击并选择“打印描述”sarr“'并在lldb控制台中获取正确的(上面匹配的)输出。是否有一些额外的技巧让Xcode本身显示结构的合成儿童?
答案 0 :(得分:0)
Xcode调用您提供的类的has_children()方法来生成合成子代。如果该函数未返回True,则不会调用num_children()或get_child_at_index(),而lldb命令提示符似乎不会执行该检查。因此,如果您在该函数中有错误,您将获得我在问题中描述的行为。