LoginSignup
1
1

More than 3 years have passed since last update.

BeagleBoneBlackで学ぶYoctoLinuxの基礎 (4) ~VSCodeを使ったリモートデバッグ~

Last updated at Posted at 2021-03-21

あらまし

BeagleBoneBlackで学ぶYoctoLinuxの基礎 (3)にて、CMakeを使ったHelloWorldのビルドまで完了したため、次はVSCodeを利用したリモートデバッグの仕組みを作成する。

大まかには以下の手順となる。scp及びsshはターミナルエミュレータからも可能だが、すべてをVSCodeで完結させるため、tasks.jsonを定義し、ビルド後のイメージの転送とgdbserverの起動をVSCode上から実施できるようにした。

大まかには以下の手順でデバッグが可能となる。

  • scpを使ってa.outをBBBに転送
  • sshを使って、BBB上でa.outのgdbserverを起動する
  • VSCodeからgdbを使って接続する

振り返り

BeagleBoneBlackで学ぶYoctoLinuxの基礎 (2) より、BBBはipアドレス:192.168.100.19を利用していることがわかっている。

tasks.jsonの作成

.vscode.内部に、以下の通りtasks.jsonを作成した。

  • bbb-downloadにてa.outをBBBに転送
  • bbb - rungdbにてBBB上でgdbserverを起動

scp及び、ssh実行時にパスワード認証が必要となるが、毎回入力する必要があり煩わしく感じたため、sshpassを利用した。また、仮に、転送先: /home/user及び、ポート番号1234を設定した。

tasks.json
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "bbb - download",
            "type": "shell",
            "command": "sshpass -p user scp -r ${workspaceFolder}/build/a.out user@192.168.100.19:/home/user"
        },
        {
            "label": "bbb - rungdb",
            "type": "shell",
            "command": "sshpass -p user ssh user@192.168.100.19 \"gdbserver localhost:1234 /home/user/a.out\""
        }
    ]
}

これにより、VSCodeのコマンドパレット(Ctrl-p)より、Tasks: Run Taskを実行することにより各タスクを呼び出すことが可能となる。また、呼び出し時にVSCodeのTerminalにその結果が出力される。

image.png

bbb - downloadbbb - rungdbを順に実行すると、Terminal上にgdbserverが1234ポートをListenしていることが表示される。

image.png

launch.jsonの作成

デバッグ環境を定義するために、.vscode内に以下の通りlaunch.jsonを作成した。

項目 説明
name お好みで
program デバッグ対象の実行ファイル
miDebuggerServerAddress 接続先のgdbserverのIPアドレスとポート番号
miDebuggerPath sdkに含まれるgdb
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) bbb - Remote",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/a.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "miDebuggerServerAddress": "192.168.100.19:1234",
            "miDebuggerPath": "/opt/poky/3.1.6/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux/arm-poky-linux-gdb",
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

VSCode上でデバッグマークを選択すると、デバッグ環境の選択に(gdb)bbb - remoteが選択可能となり、RUN AND DEBUGの右側の緑矢印を選択すればデバッグが可能となる。

image.png

まとめ

  • BBB上で動作するLinuxに対するリモートデバッグ環境を作成した
  • すべてVSCode上で実行するため、taskを利用した
  • Local変数、Callstack等も見れていい感じ
1
1
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
1
1