【发布时间】:2020-05-08 07:28:30
【问题描述】:
最近几天我一直在使用 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
当我尝试如下打印数组时
(gdb) printmyvar blitz_array_name
我收到此错误“无法将函数运算符
d) 我可以定义如下宏
PRINTBLITZ(myvar) std::cout<<myvar<<std::endl
但通过 GDB 我无法传递宏并执行它。
我们怎样才能简单地从 GDB
执行类似下面的操作std::cout<<myvar<<std::endl
请针对此问题提出任何解决方案。 任何建议都非常感谢,并加速我的调试。
提前非常感谢您!
【问题讨论】: