在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> ...
或许有不同的方法可以做到。
答案 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
部分对此进行了讨论