ROSのデバッグを簡単にVSCodeで行う方法について

プログラムのデバッグという行為は憂鬱なものです.特にC++なんて使っていた日にはビルドしてプログラムを実行するという手順になってしまうのでデバッグのやる気も起きないですよね.

こういうときPythonなどの言語が羨ましくなります.というわけで今回はそんなデバッグを少しでも簡単にするためにVSCodeでデバッグする方法を解説していきます.

はじめに

最近プログラムがなぜか起動しないということが多く,いいかげんデバッグ作業を覚えないといけないなーと感じているロックです.

以前まではデバッグはcoutなどを使うレベルで大丈夫だったのですがOSSなどのコードをいじって実装することが最近出てきましてデバッグツールを使えないとコードが複雑すぎて追えないということが起きています.

というわけでそろそろデバッグツールの使い方でも覚えようということでVSCode内のデバッグを試していこうかと思います.

こちらのWebサイトを参考にさせていただきました.
https://qiita.com/taka_horibe/items/50e4659e88d1ee3cd04a
http://www.lib4dev.in/info/MrGnomes/VS_Code_ROS/i19793

VSCodeでWorkspaceのセットアップ

まずは何はともあれROSの拡張機能をインストールしてあげましょう.

Imgur

次にVSCode内でWorkspaceの設定をします.正直この設定をしなくてもなんとかなるかと思いますが,なんかこれを設定してあげると嬉しいみたいです.ちなみに設定の方法はVSCodeの File>Save Workspace As から対象のワークスペースを選んでやればいいです.

VSCodeでROSパッケージをビルドする

これは tasks.json というファイルを.vscodeフォルダ内に作成することで設定することができます.
以下の内容を tasks.json に書き込めば大丈夫だと思います.

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "ROS: catkin_make",
            "type": "shell",
            "command": "catkin_make",
            "args": [
                "-j4",
                "-DCMAKE_BUILD_TYPE=Debug"
            ],
            "problemMatcher": [],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

これで CTRL+SHIFT+B と入力することでパッケージのビルドが行えるようになるかと思います.この機能すら知らずにVSCodeで開発していたので本当にもったいねぇ!と今更ながら思っています.

VSCodeでROSのデバッグを使用する設定

この機能は.vscodeフォルダ内に launch.json ファイルを作成することで実現することができます.

とうとうデバッグ機能の登場です.というわけで以下の launch.json ファイルを作成してください.

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/devel/lib/hello_vs_code/vs_talker",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

この"program"の部分に自身が起動したいプログラムを設定してください.今回はhello_vs_codeパッケージのvs_talkerを起動しています.

少し面倒ですがデバッグを行いたい時は適宜この部分を変更するようにしましょう.

これで基本的に虫マークの部分やキーボードのショートカットではF5からファイルを実行してデバッグ処理をしていくことができます.

デバッグ画面は以下のような感じですね.基本的にSegmentation Faultがおきた場所で自動的に止まるようになっているのですが自動的に一番深い場所まで潜ってくれるので実際に書いたコード内で止まった場所を探す場合は左下のCALL_STACKという部分から探すといいです.

Imgur

というわけでROSのビルドとデバッグの実行をどちらもショートカットで実行して快適なROS生活を送りましょう!

さいごに

今回はVSCodeでROSのビルドからデバッグまでを快適に実行する方法について解説しました.

これで作業効率UP間違いなしですので是非みなさんも試してみてください.

0 件のコメント :

コメントを投稿