あらまし
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
を設定した。
{
"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にその結果が出力される。
bbb - download
、bbb - rungdb
を順に実行すると、Terminal上にgdbserverが1234ポートをListenしていることが表示される。
launch.json
の作成
デバッグ環境を定義するために、.vscode
内に以下の通りlaunch.json
を作成した。
項目 | 説明 |
---|---|
name | お好みで |
program | デバッグ対象の実行ファイル |
miDebuggerServerAddress | 接続先のgdbserverのIPアドレスとポート番号 |
miDebuggerPath | sdkに含まれるgdb |
{
// 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__の右側の緑矢印を選択すればデバッグが可能となる。
まとめ
- BBB上で動作するLinuxに対するリモートデバッグ環境を作成した
- すべてVSCode上で実行するため、taskを利用した
- Local変数、Callstack等も見れていい感じ