我找到了一种在 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.
答案 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