Renesas Synergy™

FAQ 107543 : High-performance Embedded Workshopを使用していて、ウォッチウィンドウで"Not availablenow."と表示されたり、変数が正しく参照できなかった場合の原因と対策方法を教えてください。

Q: 質問

High-performance Embedded Workshopを使用していて、ウォッチウィンドウで"Not availablenow."と表示されたり、変数が正しく参照できなかった場合の原因と対策方法を教えてください。 


A: 回答

  1. "Not available now."と表示される場合

    1. コンパイラ、アセンブラなどのツールチェインでDebugオプションが指定されていない場合

      ツールチェインでDebugオプションが指定されていない場合、デバッグ情報が存在しないため、変数を参照できません。
      ToolchainでDebugオプションを指定して、アブソリュートファイルを作成し直して下さい。

    2. スコープの範囲内に変数が存在しない場合

      ローカル変数がスコープの範囲内に存在しない場合は、参照できません。
      スコープの範囲とは、現在のプログラムカウンタ値を含む関数を示します。
      ウォッチウィンドウでローカル変数が参照できるのは、その変数を使用している関数内にプログラムカウンタが存在するときに限定されます。

      なお、High-performance Embedded Workshop V4.03からは、変数をスコープ(ファイルローカル およびグローバル)別に参照できるようになりました。
      異なるスコープにある同名の変数が参照できます。

    3. 変数が#defineで宣言されている場合

      #defineで宣言された変数は、ウォッチウィンドウで参照することは出来ません。

    4. ツールチェインの最適化の結果により、変数そのものが存在しない場合

      ツールチェインの最適化機能では、プログラム構成を解析し、不要(冗長)な処理を削除します。
      削除された変数は、ウォッチウィンドウで参照できません。
      最適化の対象からはずしたい場合は、最適化をオフするか変数をvolatile宣言してください。

    5. コンパイラの出力ファイル形式を機械語プログラム(*.obj)ではなくアセンブリプログラム(*.src)にしている。

      コンパイラオプションに -code=asmcode を指定した場合、アセンブラ経由でビルドされますので、C言語のソースレベルでのデバッグはできません。

  2. 変数が正しく参照できない場合

    ウォッチウィンドウで変数が正しく参照できない場合、ソースプログラムで該当変数へ設定している値が、デバッグ情報では正しく設定されていない可能性があります。
    コンパイラの最適化オプションをOFFにしてビルドを実行してから、再度、変数の値をご確認下さい。

    1. コンパイラの最適化オプションをOFFにする方法

      コンパイラの最適化オプションで-optimize=0を指定。
      (SHの場合は、-optimize=debug_onlyを指定)

    2. ウォッチウィンドウで変数が正しく参照できていない関数を定義しているファイルのみ 最適化をOFFにする方法

      High-performance Embedded Workshopのメニューから[ビルド]->[XXXX Standard Toolchains]を選択。
      起動したダイアログでオプションを設定する際にダイアログの左側にあるリストから関数が定義されている ファイルを選択して-optimize=0を指定。
      (SHの場合は、-optimize=debug_only)

適用製品

SuperHファミリ用C/C++コンパイラパッケージ
RXファミリ用C/C++コンパイラパッケージ
H8SX,H8S,H8ファミリ用C/C++コンパイラパッケージ
SuperHファミリ用シミュレータデバッガ [High-performance Embedded Workshop対応]
RXファミリ用シミュレータデバッガ [High-performance Embedded Workshop対応]
H8SX,H8S,H8ファミリ用シミュレータデバッガ [High-performance Embedded Workshop対応]
E1 [R0E000010KCE00]
E20 [R0E000200KCT00]
E10A-USB
E8a
E10T-USB
E10A
E10T
E8
E7
R0E436640CPE00
R0E436049CPE10
R0E436640CPE10
R0E436640CPE20
E100
E200F
E6000H
E6000
他にご質問がございましたら、リクエストを送信してください