スタックフェンス

Note

本機能を使用するためには、スタックフェンスに対応したSOLID-OSが必要です。

概要

スタックフェンスは、データアボート例外時にスタックの使用状況のチェックを行い、あふれていた場合に通知する機能です。 これは 例外発生時のレポート に似ていますが、スタックの状況が表示されるという点が異なっています。

スタックのトップをこえてアクセスしてしまった場合に、自動的に実行が停止し、デバッグ例外ウィンドウに Data Abort Exception caused by stack overflow というメッセージが表示されます。また、 スタックに関連する以下のような情報が表示されます。

TID 例外が起こったタスクID
Access Address アボートしたアドレス
Access type Read もしくは Write
Stack usage スタック消費量
Stack top スタックトップのアドレス
Stack bottom スタックボトムのアドレス

使い方

必要な設定はありません。データアボート時に自動的にデバッグ例外ウィンドウが表示されます。

次の画像は、実際にスタックがあふれたことが原因で例外が起こった際の通知画面です。 スタックのトップは 0xf8301000 ですが、0xf8300ff8 にアクセスしてしまった(Access Addressより)ため例外が発生したことがわかります。更に逆アセンブルウィンドウを見ると、STMDB sp!, {r11, lr} でアボートしています。SPが 0xf8301000 なので、0xf8301000 に対して2つのレジスタをpushしようとして、8バイトのアクセスが発生した事がわかります。

../_images/stack-fence-exception.jpg