最近几天我一直在使用 Blitz 阵列包。在调试期间,我需要打印数组内容,并且 blitz 支持如下所示
std::cout<<blitz_array_name<<std::endl
我想在调试期间通过 GDB 打印数组内容。所以我为我喜欢打印的不同类型的数组编写了重载函数,如下所示
void printBlitz(blitz::Array<bool, 1> &in)
{
std::cout<<in<<std::endl;
}
void printBlitz(blitz::Array<int, 1> &in)
{
std::cout<<in<<std::endl;
}
... and so on
在 gdb 调试器上,我可以简单地调用这个函数,如下所示
(gdb) call printBlitz(blitz_array_name)
- 现在的问题是我正在使用多种类型的多维数组,我必须为每个数组进行重载
- 我无法通过 GDB 的调用功能调用模板函数 - 这也会有所帮助
- 我试图做类似下面的事情
(gdb) 定义 printmyvar 调用 (void)operator<<(std::cout, $arg0) print "\n" end
当我尝试如下打印数组时
(gdb) printmyvar blitz_array_name
我收到此错误“无法将函数运算符 << 解析为任何重载实例”
d)我可以定义一个宏如下
PRINTBLITZ(myvar) std::cout<<myvar<<std::endl
但通过 GDB 我无法传递宏并执行它。
我们怎样才能简单地从GDB执行类似下面的东西
std::cout<<myvar<<std::endl
请为此问题提出任何解决方案。任何建议都非常感谢,并加速我的调试。
非常感谢您!