みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

Zephyrでデバッグ

はじめに

Zephyrのアプリケーションをデバッグする。ターゲットはSTM32F4Discoveryを使用する。

コンフィグレーション

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で接続するポートが異なったりするので注意が必要。