GDB 无法显示升压 uBLAS 矩阵?
GDB Can't Display Boost uBLAS Matrix?
我有一个使用Boost的uBLAS矩阵实现成功编译的程序。遗憾的是,使用gdb进行调试是有问题的,因为在调试时我找不到查看矩阵内容的方法。当我试图看到矩阵V的一个元素(它确实存在并且充满了数据)时,我得到:
(gdb) print V(1,1)
Invalid data type for function to be called.
有办法绕过这个吗?
谢谢!
可以调用
V.operator()(1,1)
在gdb 中
这是因为GDB不支持调用重载的operator()
。它试图将V
作为一个函数调用,但它不是一个函数。您可以编写一个独立的函数,将矩阵传递给并调用操作符:
int get_element(matrix const &m,int i,int j) {
return m(i,j);
}
(gdb) p get_element(V,1,1)
(int) $0 = 43.1
GDB应该能够调用
您也可以尝试手动检查V
的表示,以便手动提取所需的值。不过,对于使用大量模板或元编程的类型来说,这可能会很困难。
如果您碰巧在LLDB支持的平台上工作,它支持调用运算符重载。
struct foo {
int operator()(int i,int j) {
return 10;
}
};
(lldb) p f(1,1)
(int) $0 = 10
我在寻找这个问题的解决方案时发现了这个线程。所提出的解决方案运行良好。但是,您也可以使用ublas矩阵的at_element
方法。
相关文章:
- 封装提升 ublas 矩阵运算符 ()
- 插入Boost UBLAS矩阵MATLAB样式的数据
- boost::ublas如何得到int矩阵的行列式
- 如何在C++增强 ublas 中将文件流式传输到矩阵中
- 将Boost ublas矩阵写入文本文件
- 为什么uBLAS没有“运算符*(矩阵,向量)”
- 如何将元素插入具有动态大小的 ublas 矩阵中
- GDB 无法显示升压 uBLAS 矩阵?
- 如何将boost::numeric::ublas::vector复制到矩阵
- Boost uBLAS矩阵参考
- 使用迭代器遍历boost::ublas矩阵
- ublas:将ublas::vector包装为ublas:矩阵表达式
- 通过值返回boost ublas矩阵,仅在vs2012的发布配置中工作
- uBLAS矩阵清除内存
- boost::uBLAS如何处理矩阵的嵌套乘积
- Boost Ublas矩阵所有元素的平方根
- 什么是矩阵表达式和向量表达式类在Boost.uBLAS
- BOOST uBLAS矩阵产品速度极慢
- 如何在ublas::矩阵中查找项目的所有出现项
- Boost uBLAS矩阵/向量积