はじめに
GDB?Eigen?な人はお帰りください.
恐らくこの記事はあなたが欲しい情報を提供することができないでしょう.
これから書くことは↓に全て書いてあります.
つまずく人もいそうなので一応日本語情報を残す意味合いで書きました.
因みに筆者の環境はUbuntu18.04です.
GDBでEigenのデバッグができない問題
GDBでEigenのデータを取得しようとすると固まります.
私はCLionにバンドルされているGDBを使っているのですが,
CLionの画面では"Collecting Data..."と出たきりCLionの応答がなくなってしまいます.
これではデバッグどころかコーディングもできない!!
解決策
冒頭にも言った通り以下のStackOverFlowに書かれています. stackoverflow.com
実はEigenにGDBの拡張プラグインが含まれていてそれをインストールすることで解決できるというオチですw
拡張プラグインのダウンロード
Eigen本体に拡張プラグインが含まれているのでダウンロードします*1.
以下,/home/hans
ディレクトリにダウンロードした前提で話をすすめるので適宜置き換えて読んでください.
cd /home/hans/ git clone https://github.com/eigenteam/eigen-git-mirror.git
拡張プラグインの読み込み設定
gdbの設定ファイルを作ってプラグインの読み込み設定を記述します.
ホームディレクトリに.gdbinit
という名前のファイルを作成して次の内容をコピーしてください.
python import sys sys.path.insert(0, '/home/hans/eigen-git-mirror/debug/gdb') from printers import register_eigen_printers register_eigen_printers (None) end
GDBの再起動
設定ファイルの内容が反映するにはGDBの再起動が必要です.
GDBを起動しているなら一度落としてもう一度起動してください.
Eigenのベクトルや行列をデバッグした時に写真の用に中身が表示できていれば成功です.
*1:libeigen3-devパッケージには必要最低限のものしか含まれていないのでダウンロードする必要があります