28
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ROSのC++のソースコードをgdbでデバッグする方法

Last updated at Posted at 2017-08-23

ROSを使ってC++のコードを書いた時にgdbでデバッグするときに,rosrunやroslaunchを使った方法を日本語で簡単に解説しているサイトがあまりないので書き留めます.

準備

gdbを使用するためには,デバッグ情報を付与する必要があります.
catkin_make,もしくはcatkin toolsでは以下のようにしてデバッグ情報付きでビルドをすることができます.

# catkin_makeの場合
catkin_make -DCMAKE_BUILD_TYPE=Debug 

# catkin_toolsの場合
catkin build -DCMAKE_BUILD_TYPE=Debug 

rosrunでgdbを利用する

rosrunではindigo以降,--prefixオプションを利用することでgdbなどを利用できるようになりました.以下のように使用します.

# 同じターミナル内で実行する場合
rosrun --prefix 'gdb --args' pkg_name node_name
# 別のウィンドウにターミナルを開いて実行する場合
rosrun --prefix 'gnome-terminal -x gdb --args' package_name node_name

roslaunchでgdbを利用する

roslaunchでは<node>タグにlaunch-prefix属性を用いることでgdbなどを利用することができます.以下のようなlaunchファイルを作成して使用します.

<launch>
  <node pkg="pkg_name" type="node_name" name="name" launch-prefix="gdb --args"/>
</launch>

launch-prefixの値を変更することで,rosrunで実行する場合と同様に,別のウィンドウにターミナルを開いて,デバッグしたいノード以外の挙動を見ながらデバッグすることも可能です.

#おわりに
ROSでgdbが使えると,自分が書いたコードをデバッグ出来るだけでなく,Navigation stackなどの有名パッケージの動作について,内部の挙動を見ながら理解することが可能になり,非常に便利です.

余談ですが,rosrunの--prefixオプションやroslaunchのlaunch-prefix属性では,gdbだけでなく,メモリデバッグツールであるValgrindやPythonのデバッガであるpdbを使用することもできます.

28
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?