GDB无法显示提升uBLAS矩阵?

Ric*_*ard 5 c++ gdb matrix boost-ublas

我有一个使用Boost实现uBLAS matricies的成功编译程序.唉,使用gdb进行调试证明是有问题的,因为在调试时我无法看到我的矩阵的内容.当我试图看到矩阵V的元素(确实存在并且充满了数据)时,我得到:

(gdb) print V(1,1)
Invalid data type for function to be called.
Run Code Online (Sandbox Code Playgroud)

有没有解决的办法?

谢谢!

Pus*_*dre 14

人们可以打电话

V.operator()(1,1)
Run Code Online (Sandbox Code Playgroud)

在gdb中


bam*_*s53 4

这是因为 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
Run Code Online (Sandbox Code Playgroud)

GDB 应该能够调用它

您还可以尝试手动检查 的表示形式,V以便手动提取所需的值。不过,对于使用大量模板或元编程的类型来说,这可能会很困难。

如果您碰巧在 LLDB 支持的平台上工作,它支持调用运算符重载。

struct foo {
    int operator()(int i,int j) {
        return 10;
    }
};

(lldb) p f(1,1)
(int) $0 = 10
Run Code Online (Sandbox Code Playgroud)