如何在复杂的cpp项目中打印gdb中的犰狳矩阵?

时间:2017-01-03 13:04:21

标签: c++ debugging gdb armadillo

我找到了一种在 this site 上的gdb中打印犰狳矩阵的方法。但是,如果

会发生什么
#include <iostream>
#include <armadillo>


template<class Matrix>
void print_matrix(Matrix matrix) {
matrix.print(std::cout);
}

//provide explicit instantiations of the template function for 
//every matrix type you use somewhere in your program.
template void print_matrix<arma::mat>(arma::mat matrix);
template void print_matrix<arma::cx_mat>(arma::cx_mat matrix); 

位于debug_armadillo.h文件中。如何执行呼叫功能?我试着输入:

call 'debug_armadillo.h'::print_matrix<arma::Mat<float>>(C)

但我得到的错误是:

No symbol "print_matrix" in specified context. 

1 个答案:

答案 0 :(得分:1)

  

应该如何执行呼叫功能?

此调用应该有效。使用制表符完成功能可以按照https://stackoverflow.com/a/22766955/72178中的建议自动填充完整的C ++类型。

(gdb) call print_matrix<arma::Mat<float> >(C) 
  

没有符号&#34; print_matrix&#34;在指定的上下文中

确保在生成的二进制文件中实际生成了print_matrix函数。尝试grep解码符号,可能确切类型在模板参数中与您尝试调用的内容有所不同:

nm -C your_binary | grep print_matrix