EspExceptionDecoder
ESP32

概要

Arduino core for the ESP32で利用可能な、スタックトレーサのEspExceptionDecoderをインストールして試してみました。デバッガとは異なりますが、ESP32で例外が発生したときにはとても有用です。

こちらのページを試してみただけです。

Arduino core for the ESP32のインストールのページはこちら

実験

インストール

インストールの手順は以下の通りです。

  1. Arduino core for the ESP32をインストールする。
  2. ツールをダウンロードする。 このページを作成したときの最新版は、EspExceptionDecoder-1.0.6.zip でした。
  3. Arduinoのスケッチを配置するディレクトリに、toolsディレクトリを作成する(ない場合)。
  • Windowsの場合、ドキュメント配下のarduinoディレクトリです。
  1. ダウンロードしたファイルを、上記のtoolsディレクトリに展開する。
  • 展開した結果、arduino/tools/EspExceptionDecoder/tool/EspExceptionDecoder.jarというファイルができあがります。
  1. Arduino ソフトウェアを起動していた場合は、終了させる。
  2. Arduino ソフトウェアを起動する。

インストールに成功していた場合は、以下のように、Arduinoソフトウェアの、「ツール」メニュー配下に「ESP Exception Decoder」という項目が表示されます。

使い方

ツールを起動して、Arduinoソフトウェアのシリアルコンソールに表示されるスタックトレースを、コピー&ペーストするだけです。

試しに、以下のプログラムで試してみました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
void setup() {
  // put your setup code here, to run once:
 char *s;
 
 Serial.begin(115200);
 Serial.printf("s = %s\n", s);
}
 
void loop() {
  // put your main code here, to run repeatedly:
}

このプログラムを実行すると、以下のようにスタックトレースが表示されます。

コンソールに表示された、スタックトレースをツールにコピー&ペーストすると、どこで例外が発生したのかが表示されます。

今回は、setup()の6行目が原因で、_svfprintf_rで例外が発生したことがわかりました。

レジスタのダンプは、ペーストしなくても問題はありません。

バージョン

Hardware:ESP-WROOM-32
Software:Arduino 1.8.4/Arduino core for the ESP32

最終更新日

March 21, 2022

inserted by FC2 system