はじめに
Zephyrのアプリケーションをデバッグする。ターゲットはSTM32F4Discoveryを使用する。
コンフィグレーション
menuconfig
west
でmenuconfigを開くには次のようにする。
$ west build -t menuconfig
デバッグ用設定
次の設定を有効化する。
- DEBUG
- DEBUG_INFO
- DEBUG_OPTIMIZATION
デバッグ開始
westでデバッグを開始できる。
$ west debug
gdbserverの起動、gdbの起動、ターゲットの接続まで自動でやってくれる。
gdbgui
コマンドラインでgdbデバッグできないにわかなのでgdbguiを使用したい。
しかし、westもgdbgui同様gdbのフロントエンドなので、westからgdbguiを呼び出すようにするのは難しい。
このような場合は、次のようにwestでデバッグサーバーを開始してからgdbguiを実行する。
$ west debugserver
別のターミナルで先程のコマンドを実行する。
$ gdbgui -g ${ZEPHYR_SDK_INSTALL_DIR}/arm-zephyr-eabi/bin/arm-zephyr-eabi-gdb --gdb-args "-ex 'target remote :3333' -ex 'monitor halt' -ex 'monitor reset' -ex 'load'" build/zephyr/zephyr.elf
まとめ
gdbサーバの起動やgdbの起動までwestで一発でできるのでデバッグ開始までが簡単。
gdbguiも一応使用できることがわかった。
west debugserver
ではボードによって使用するgdbサーバが変わることがあるためgdbで接続するポートが異なったりするので注意が必要。