PlatformIO の Desktop テストを Visual Studio Code でデバッグ
PlatformIO の Desktop(Native) テストは デスクトップ(PC) 上で動かすので「Visual Studio Code でデバッグできるのでは?」と期待してしまうのですが、 そのための正しい手順というのはなさそうです。
しかしながら、デバッガーを使いたいと思うことはそれなりにあるので、
「launch.json
を毎回書き換える必要がある」という条件付きですが、
Visual Studio Code でデバッグする方法を考えてみました(ちょっと前から使っていますが、毎回ひと手間必要だけど普通に動いてはいます)。
- マイコンボード上で稼働しているコードをデバッグする手順ではありません。
- 「正しい手順はなさそう」というのは少し前に調べたときのことなので、現状ではまた違うかもしれません。
build_flags
platformio.ini
のテスト用セクションの build_flags
を以下のように変更します。これで、Breakpoint 等が機能するようになります。なお、build_type
を debug
にしても機能するようにはならなかったので注意してください(debug
にすると -c -Og -g2 -ggdb2
になるようです)。
[env:test-native]
platform = native
test_ignore = test_embedded
;build_type = debug
build_flags = -O0 -g
ビルド
$ pio test -e test-native
などでテストを実行し、テストの実行ファイルをビルドしておきます。
launch.json
Run View の歯車アイコンをクリックして launch.json
を開きます。
configurations
配列に以下の項目を追加します。
なお、"program": "${workspaceFolder}/.pio/build/test-native/program"
はテスト用のセクション名が [env:test-native]
の場合の例です。
異なる場合は該当部分を書き換える必要があります。
また、ファイルのコメントにあるように、launch.json
は PlatformIO が書き換えているようなので
(Window をリロードしたりなどの「ちょっとした操作」で初期化されます)、
時間を空けてデバッグを再開するときは、多くの場合で再追加する必要があります。
{
"name": "PIO Debug Desktop Test",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/.pio/build/test-native/program",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
デバッグ
Run から PIO Debug Desktop Test
を選択し F5
の押下などでデバッグが開始されます。
ポップアップリストに PIO Debug Desktop Test
が存在しない場合、launch.json
が初期化されてしまっています。前述の手順で項目を再追加する必要があります。
改善点
やはり launch.json
の設定を永続化されるようにはしたいのですが、PlatformIO の仕様のようなのでちょっと難しそうかなと。