##この記事の目的
友納先生のSLAM解説本「SLAM入門」のコードについて、デバッグモードで実行する手順のまとめです。
手を動かしながらSLAMを理解できる本で、ソースコードに対して非常に丁寧な解説がついており、基本的な部分はこれだけ読めば理解できます。
一方、実行途中でどのように変数の値が変化しているのか、中身が気になってきます。
デバッグ設定でプロジェクトを実行している例がなかったので、
Eclipseとお友達になることも兼ねて作業したメモとして残します。
実行環境
- Ubuntu 16.04
- Eclipse Photon
コードとは別に配布されているデータセットは、書籍と同様にLittleSLAM/datasetへ格納しています。
EclipseでDebugするまでの手順
CMakelist.txtの編集
公開されているリポジトリではReleaseビルドするためのCMakelist.txtになっており、デバッグシンボルが入りません。
下記のように変更を加え、引数からデバッグ用プロジェクトを生成できるようにします。
こちらを参考にしました。
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c545275..f8b2bfe 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -15,7 +15,10 @@ if(UNIX)
endif()
endif()
-SET(CMAKE_BUILD_TYPE "Release")
+if(NOT CMAKE_BUILD_TYPE)
+ set(CMAKE_BUILD_TYPE "Release")
+endif(NOT CMAKE_BUILD_TYPE)
+set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE})
add_subdirectory(cui cui)
add_subdirectory(framework framework)
Eclipse プロジェクトの生成
上記でデバッグシンボルを入れるMakefileを生成してくれるようになったので、
これをつかってeclipseのプロジェクトを作ります。またしても上記スライドを参考に、下記のように行います。
cd {your-workspace}/LittleSLAM
mkdir work; cd work
cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_BUID_TYPE=Debug ../
Eclipse プロジェクト読み込み
作成したEclipseプロジェクトを読み込みます。
[File]-[Open Projects from File System...]を選択
[Directory]をクリックし、下記のような形でプロジェクトのディレクトリ (LittleSLAM)を選択
[Finish]をクリック
ビルドしてみる
とりあえずビルドできるか確認してみます。
Project ExplorerのLittleSLAM-Debug@workで右クリック - [Build Project]
以下のような内容がコンソールに出力され、ビルドが終わります。
14:23:02 **** Build of project LittleSLAM-Debug@work ****
/usr/bin/make -j4 all
/usr/bin/cmake -H/home/<usrname>/eclipse-workspace/LittleSLAM -B/home/<usrname>/eclipse-workspace/LittleSLAM/work --check-build-system CMakeFiles/Makefile.cmake
・・・中略・・・
/usr/bin/cmake -E cmake_progress_start /home/<usrname>/eclipse-workspace/LittleSLAM/work/CMakeFiles 0
14:23:50 Build Finished. 0 errors, 1 warnings. (took 47s.152ms)
ブレークポイント設定
適当なところにブレークポイントを仕込んでおきます。
とりあえず、プロジェクトのcui/main.cppに入れてみます。
Debug実行方法の指定と実行
さて、これでEclipseをつかってDebugシンボル入りの実行ファイルを生成できるようになりました。
あとはどのような構成で実行するか指定します。
- Project ExplorerのLittleSLAM-Debug@workで右クリック - [Debug As] - [Debug Configurations...]を選択
- [C/C++ Application]を選択し、[New Launch Configuration]をクリック
こんな感じです。
[Apply]をクリックして設定を適用します。
ここまでできたら、[Debug]をクリックして実行
いつもどおりmain関数の開始時にHaltがかかるので三角ボタンで続行すると、こんな感じで実行できます。
変数の中身が見れてめでたしめでたし。
※実行速度は圧倒的に遅くなりますが、しょうがないというところで。