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

Custom summary for class template (c++)

本文关键字:c++ 自定义      更新时间:2023-10-16

在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> ...

或者也许有一种不同的方法可以做到这一点。

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

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

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

这在 http://lldb.llvm.org/varformats.html REGULAR EXPRESSION TYPENAMES一节中讨论