スタックフェンス
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バイトのアクセスが発生した事がわかります。