Arduinoで遊ぶページ

Arduinoで遊んだ結果を残すページです。
garretlab
EspExceptionDecoderの実験(ESP-WROOM-32)

概要

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ディレクトリです。
  4. ダウンロードしたファイルを、上記のtoolsディレクトリに展開する。
    展開した結果、arduino/tools/EspExceptionDecoder/tool/EspExceptionDecoder.jarというファイルができあがります。
  5. Arduino ソフトウェアを起動していた場合は、終了させる。
  6. Arduino ソフトウェアを起動する。

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

使い方

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

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

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で例外が発生したことがわかりました。

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

バージョン

Arduino 1.8.4/Arduino core for the ESP32/ESP-WROOM-32



メニューを表示するためにJavaScriptを有効にしてください。

Arduinoで遊ぶページ
Copyright © 2018 garretlab all rights reserved.
inserted by FC2 system