OSX环境下使用LLDB查看C++类继承层级结构的方法咨询
LLDB查看C++类继承结构的解决方案
首先解释v *this报错原因
你使用的lldb-902版本属于较旧的Xcode配套版本,v在该版本中是version命令的别名,而非高版本中frame variable的简写,因此传入参数会触发参数错误。
可用的操作方法
- 方法1:查看当前对象的完整继承层级+成员
执行完整的frame variable命令即可展开所有父类结构:
frame variable *this
输出会按继承顺序依次列出Derived2自身成员、Derived1父类成员、Base基类成员,完整展示继承结构下的所有内容。
- 方法2:单独查看某一级父类的对象视图
你之前使用指针转换只会输出地址信息,改为引用转换即可展开对应层级的对象内容:
# 查看Derived1层级的内容 p (Derived1&)*this # 查看Base基类层级的内容 p (Base&)*this
- 方法3:查看类的静态继承定义
如果不需要看当前对象的成员值,只需要看类的完整继承关系结构,使用image lookup命令查询类型定义即可:
image lookup -t Derived2
输出会打印Derived2的完整类型声明,包含所有父类的继承方式、继承顺序,也就是你需要的完整类继承树。
内容的提问来源于stack exchange,提问作者Igor
相关产品推荐
相关产品推荐

