2017-01-03 4 views
0

012dbにgdbのアルマジロ行列を印刷する方法が見つかりました。しかし、どうすればどうなるのですか?複雑なcppプロジェクトでgdbのarmadilloマトリックスを印刷するには?

#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

どのように呼び出し機能?

この呼び出しが動作するはずです。 https://stackoverflow.com/a/22766955/72178で提案されているように、Tab補完を使用して正確なC++型を自動補完します。

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

print_matrix機能が実際にバイナリを結果で生成されたことを確認してください指定されたコンテキストで無記号 "print_matrix"。 grepデマングル記号を試してください。おそらく正確なタイプは、あなたの呼び出し元のものとテンプレート引数のビットが異なります:

+0

ありがとうございました。しかし、あなたの最後のコマンドの結果は何もありません。これはおそらく、print_matrixがバイナリで生成されていないことを意味します。そのため、指定されたコンテキストで "No symbol" print_matrix "エラーが発生します。"これをどうすれば解決できますか? makeファイルはうまく見えました。 – user3616359

+0

どこからでも 'debug_armadillo.h'を含めていることを確認してください。あるいは 'print_matrix'コードをいくつかのcppファイルに移動してください。 – ks1322

+0

これはこれが奇妙な理由です。 'debug_armadillo.h'はmakefileに含まれており、すべてがうまく構築されているようです。そして、そうでない場合、タブの補完はうまくいかないと思います。 – user3616359

関連する問題