安曇野の森から > ROS(Robot Operating System)を使う > デバッグ

デバッグ

デバッグオプションを付けてビルドする

gdbを使ってデバッグするにはデバッグオプションを付けてビルドし、デバッグ情報を出力させておく必要があります。

デバッグ情報なしでもgdbで起動は出来ますが、ステップ実行やブレークポイントなどが設定出来ません。

デバッグ情報を出力させるにはパッケージディレクトリにあるCMakeLists.txtに以下の行を追加します。わかりやすい位置として先頭のproject()の下あたりがよいでしょう。
CMakeLists.txtを修正した後でデバッグ情報を出力させるため、再度catkin_makeを実行しておきます。

デバッグ情報を追加するとファイルサイズが大きくなるのと処理速度が落ちるのでリリース時には、このデバッグ情報を出さないよう以下の行をコメントアウト(先頭に#を付ける。)します。


gdbからノードを起動する

初めに以下のコマンドでマスターを起動しておきます。


以下のコマンドでデバッグ対象ノードのバイナリファイルのあるディレクトリへ移動します。


以下のコマンドでgdbを使ってノードを起動します。
通常、実行ファイル名はノードを作成した時のファイルから拡張子を取ったものを使います。


gdbのプロンプト(gdb)が表示されるのでrコマンドでノードを起動します。

ノードを停止させるには「Ctrl+C」を押してください。
gdbのプロンプト(gdb)が表示されている状態では通常のgdbコマンドが使えます。他のgdbコマンドの使い方についてはインターネット上のたくさんの情報がありますので、そちらを参照してください。



ローンチファイルからgdbを使ってノードを起動する

以下の内容を記載したローンチファイルを作成し、roslaunchコマンドで、そのローンチファイルを起動するとgdbでデバッグ出来るようになります。

<node>タグの最後の「launch-prefix="xterm -e gdb --arg"」がgdbを使ってノードを起動するのに必要な設定となります。
この設定ではローンチファイルを起動したのとは別のターミナルxtermが起動し、そのターミナルの中にgdbプロンプトが表示されgdbコマンドが使えるようになります。



QtCreatorからgdbを使う

QtCreatorからもgdbを使ってデバッグすることが出来ます。

詳細はQtCreaterのgdbによるデバッグを参照してください。




inserted by FC2 system