IT用語集 › プログラミング › スタックペインティング

スタックペインティング

プログラミング Svenska → 更新: 2026-11-02

起動時にスタックを既知のパターンで塗りつぶし、後でそのパターンがどこまで上書きされたかを調べる手法。

MMUのないマイコンには、スタックが伸びすぎても警告してくれるガードページがない。スタックは黙って隣にあるものを上書きする。必要なスタックサイズを事前に計算するのは難しい。割り込み、再帰、ライブラリ呼び出しが、誰も書き留めていない深さを足すからだ。そこで、計算ではなく計測する。

起動コードがすべてのスタックをパターンで塗る。FreeRTOSはバイト0xA5、0xDEADBEEFを好む実装もある。システムをしばらく動かした後、底から上へ走査し、最初に値が変わったワードを探す。その距離がハイウォーターマーク、つまりスタックが達した最大の深さだ。FreeRTOSではuxTaskGetStackHighWaterMark()で取得できる。ただし分かるのはテスト中に起きたことだけで、最悪値ではない。だから後でマージンを足すことになるが、たいていはため息まじりだ。

← 用語集に戻る