e2studio KPIT GMUARM-NONE コンパイラ スタック解析

はじめまして。

現在、e2studio(KPIT GMUARM-NONE コンパイラ)にてスタック解析について困っています。

プロジェクトソースのスタックがオーバーフローしないか評価するのにe2studioのスタック解析機能を使用しようと

考えていましたが、ルネサス RXC および、 ルネサス CCRLコンパイラしか対応していないようです。

何か他に解析方法等はありませんでしょうか。

  • e2studio のスタック解析機能というものがどうものか知りませんが GCC の `-fstack-usage’ ではダメなんですか?
  • e²studio 5.2.0.20 Release Note にある
    Partner OS Plugin Synergy

    The Partner OS Plug-in already supported the display of the stack pointer, stack top, stack end, and stack size. Stack usage information will also be added to the view to show utilization of the stack.This shows the high memory watermark that was detected during execution.In    addition, numerous other modifications have been made such as:

    •Modified data in the view is highlighted in red text.

    これだろうか?

  • わわいです
    KPITツールチェインは、GNU GCCなので、 GCC スタック解析 でぐぐるといくつか出てくるようです。
    そこらへんでどーでしょうか
  • fujita nozomuさん、わわいさん、ご回答ありがとうございます。
    只今、fstack-usageについて調査していますが、下記のような認識で合っていますでしょうか。
    まだイメージが掴めず混乱しています。

    fstack-usageはGCCコンパイラのオプションコマンドであり、ソースコードをビルドを通す前にオプションコマンドをe²studio上で設定する。
  • > ソースコードをビルドを通す前にオプションコマンドをe²studio上で設定する。

    プロジェクトの プロパティ → C/C++ビルド → Settings → Compiler → エキスパート設定 のコマンド行パターンの最後に -fstack-usage を追加しビルドを行えば、各関数のスタック使用量を記録した *.sa ファイルが作成されると思います(未確認)。
  • fujita nozomuさん、ありがとうございました。

    >プロジェクトの プロパティ → C/C++ビルド → Settings → Compiler → エキスパート設定 のコマンド行パターン
    >の最後に -fstack-usage を追加しビルドを行えば、各関数のスタック使用量を記録した *.sa ファイルが作成
    >されると思います(未確認)
    ${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}-fstack-usage
    と記載した所、エラーが表示され、ビルドが通りませんでした。
    ${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}${fstack-usage }
    と記載した所、ビルドが通りましたが、*.sa ファイルは出力されませんでした。

    プロジェクトの プロパティ → C/C++ビルド → Settings → Compiler →ユーザー定義オプション
    にも-fstack-usageも追加してみましたが、結果は同じでした。

    オプションコマンドを記載するところが間違っているのでしょうか。
  • ${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}-fstack-usage

    と記載した所、エラーが表示され、ビルドが通りませんでした。

    `${INPUTS}' と`-fstack-usage' がくっついてますよ。

  • 返信ありがとうございます。

    >プロジェクトの プロパティ → C/C++ビルド → Settings → Compiler → エキスパート設定 のコマンド行パターン
    >の最後に -fstack-usage を追加しビルドを行えば、各関数のスタック使用量を記録した *.sa ファイルが作成されると思います。

    上記に従って、`${INPUTS}' と`-fstack-usage'と記載したのですが、私の解釈が間違っていましたでしょうか。

    また下記のように設定すると関数毎に.suファイルというファイル毎に関数のstackのsizeが出力されましたが、fujita nozomuさんの意図する.sa ファイルとは別物でしょうか。

    (プロジェクトの プロパティ → C/C++ビルド → Settings → Compiler →ユーザー定義オプション
    に-fstack-usageを追加する。)
  • > >プロジェクトの プロパティ → C/C++ビルド → Settings → Compiler → エキスパート設定 のコマンド行パターン
    > >の最後に -fstack-usage を追加しビルドを行えば、各関数のスタック使用量を記録した *.sa ファイルが作成されると思います。
    >
    > 上記に従って、`${INPUTS}' と`-fstack-usage'と記載したのですが、私の解釈が間違っていましたでしょうか。

    解釈ではなく、コマンドラインの仕組みを理解されていないようです。シェルの入門書等を参照されることをお勧めします。

    > 下記のように設定すると関数毎に.suファイルというファイル毎に関数のstackのsizeが出力されましたが、fujita nozomuさんの意図する.sa ファイルとは別物でしょうか。
    >
    > (プロジェクトの プロパティ → C/C++ビルド > → Settings → Compiler →ユーザー定義オプション
    > に-fstack-usageを追加する。)

    同じです。