类模板的自定义摘要(c ++)

时间:2017-10-22 10:03:42

标签: c++ lldb

在LLDB中,可以进行自定义格式化。例如

class Foo { ... };

我能做到

type summary add -T Foo

然后提供带有自定义摘要的python脚本。然后有

Foo f;

我可以在LLDB中使用自定义格式:

frame variable f

但是如何以通用的方式做?具有

template<typename T> class Foo { ... };

我可以为具体类型定义摘要,例如

type summary add -P Foo<int> ...
type summary add -P Foo<double> ....

但可以为所有类型做到这一点吗? 我想要像

这样的东西
type summary add -P Foo<T> ...

或许有不同的方法可以做到。

1 个答案:

答案 0 :(得分:0)

由于DWARF调试信息仅记录有关各个具体实例的信息,因此lldb(以及一般的调试器)对抽象模板没有很好的理解。

目前处理类型摘要匹配模板的方法是使用ngIfElse的-x选项。这告诉lldb将类型名称视为正则表达式。制作正则表达式以匹配模板类型名称并不困难。这里有一些在llvm数据类型的类型摘要中使用它的例子:

http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lldbDataFormatters.py?view=markup

http://lldb.llvm.org/varformats.html

中的type summary add部分对此进行了讨论