【发布时间】:2016-02-13 15:21:55
【问题描述】:
我有一个带有 static 成员的 C++ 类,表示类成员。我想使用自定义 LLDB 类型摘要显示该类成员的值,以简化使用 Xcode 进行调试。拿一个很简单的类做示范:
class A
{
public:
int memberValue;
static int classValue;
};
int A::classValue;
int main()
{
A a;
a.memberValue = 8;
a.classValue = 42;
return 0;
}
在return 语句上放置断点,运行示例,我在 LLDB 命令窗口中得到以下结果:
(lldb) print a
(A) $0 = (memberValue = 8)
(lldb) print a.memberValue
(int) $1 = 8
(lldb) print a.classValue
(int) $2 = 42
(lldb) type summary add -s "${var.memberValue}" A
(lldb) print a
(A) $3 = 8
(lldb) type summary add -s "${var.classValue}" A
(lldb) print a
(A) $4 = error: summary string parsing error
(lldb)
语法${var.classValue} 不适用于类型摘要中的类成员,就像它对常规成员一样,尽管 LLDB 能够使用print 命令显示该值。
我尝试使用 Python 摘要提供程序没有更多成功:GetChildMemberWithName 似乎也无法获取类成员。
有没有办法在自定义 LLDB 类型摘要中显示类成员值,是通过 Python 还是直接?
【问题讨论】:
-
根据lldb.llvm.org/lldb-gdb.html,(lldb)目标变量显示文件中的全局和静态变量。也许这会有所帮助。