VScode STM32 WSL J-Link arm-none-eabi-gdb

VScode上で、JLinkGDBServerを起動して、
WSLのarm-none-eabi-gdbデバッグできるようにする。

WSL

make
arm-none-eabi-gcc
arm-none-eabi-gdb
は入れておく。

VScode

をインストールする。
ポータブル版でもよい。

VScode拡張機能

f:id:katakanan:20190331171209p:plain
上から
IntelliSencse
Cortex-Debug
日本語化

設定

VScodeでCubeMXのプロジェクトファイルがあるところを
RootFolderとする。
ファイル→フォルダを開くで指定すると、.vscodeフォルダができる。
この中にいろいろなVScodeの設定が保存されている。
f:id:katakanan:20190331170832p:plain

VScodeでCube MXのパスを設定する。

Ctrl + Shift + P

c/c++ : editconfigurationsとする
f:id:katakanan:20190331171537p:plain


includeフォルダを追加しておかないとintellisenseのハイライトがエラーを出して
うざいのでパスを網羅しておく。

Tasks

,vscode内に

tasks.json

をつくる。

makeに必要な操作を列挙する。

GDBServer Path

.vscodeにsetteings.jsonがあるはずで、
cortex-debugはGDBserverの場所を知らないので書いておく、

Debug settings

Ctrl + Shift + D

で左側にデバッグのカラムができるので、
f:id:katakanan:20190331172833p:plain
構成の追加をする。
環境選択ではCortex Debugを選ぶ
f:id:katakanan:20190331173017p:plain
launch.jsonが生成されるのでelfファイルや、その他を設定する。


新しいフィールド値を設定しなければならないときは、
その場所で

Ctrl + Space

を押すとどのような値を設定できるかが表示される。
f:id:katakanan:20190331173304p:plain

preLaunchTaskはgdbServerが起動する前に実行するタスクで
先ほど定義したtasks.jsonから選ぶ。

preLaunchCommandsはgdbが起動した後に実行されるべきコマンドのリストで、
ここでは例として
・ファイルを書き込む。
・mainにbreak pointを打つ
・実行
としている。

デバッグ

main.cを開いて、

F5

を押せばデバッグが開始される。
f:id:katakanan:20190331174500p:plain

デバッグコンソールのログから、
プログラムが書き込まれていて、
ブレークポイントが設定されているのがわかる。
ここからgdbにコマンドを叩ける。

Eclipseを使いたくなかったのでVScodeで頑張ってみたが、
意外と使いやすそうだった。

実践 デバッグ技法 ―GDB、DDD、Eclipseによるデバッギング

実践 デバッグ技法 ―GDB、DDD、Eclipseによるデバッギング