【发布时间】:2016-05-18 12:24:40
【问题描述】:
我有一个简单的模板化 C++ 类 storage_for<T>,它本质上将 T 类型的值存储在原始字符数组中。我想实现一个 lldb 数据格式化程序,它将字符数组转换为类型 T 并且只显示 T 的成员。所以假设我有一个变量 storage_for<std::pair<int, int>> s; 然后 Xcode 变量列表应该显示节点
s (storage_for<std::pair<int, int>>)
first = ...
secon = ...
没有显示storage_for 类型的内部结构,也没有引入假子元素。 From reading the documentation 我认为以下应该可行:
class storage_for_synth(lldb.SBSyntheticValueProvider):
def __init__(self, valobj, internal_dict):
self.valobj = valobj
def get_value(self):
return self.valobj.GetChildMemberWithName('m_buffer').GetChildMemberWithName('__lx').Cast(self.valobj.GetType().GetTemplateArgumentType(0))
但事实并非如此。 get_value 中的表达式本身是正确的。但是 Xcode 变量列表和 lldb 控制台都没有为我的类型的变量显示任何内容。
【问题讨论】:
标签: python xcode debugging lldb