try内宣言ローカル変数のウォッチ

質問失礼いたします。

try内で宣言したローカル変数のウォッチ方法についてご教授ください。

現在CS+、RX64mを使用した開発を行っています。

今回C++で開発をしているのですが、try内で宣言したローカル変数がウォッチウィンドウ、ローカル変数ウィンドウで「???」と表示されてしまい、

値を見ること、変更することができません。

このようなローカル変数をウォッチする方法ありますでしょうか?

tryの外で変数宣言をすればよいのかもしれないのですが、過去開発のソースコード移植のため、なるべく元ソースから変えたくないという事情があり、

本質問をさせていただいてます。

---ソースコードイメージ---

int a = 0;   //aはウォッチできます

try{

  int b = 0;  //bはウォッチできません

}

catch{}

------------------------------------

-----------その他条件-----------

CS+ Version  V8.07.00

CC-RX Version V3.04.00 

コンパイルオプション(関連しそうな箇所)

  C++例外処理機能(try、catch、throw)を有効にする   はい(-exception)

  C++実行時型情報(dynamic_cast、typeid)を有効にする はい(-rtti=on)

  最適化レベル                    0(-optimize=0)

開発対象マイコン  RX64m (R5F564MFDxFB)

------------------------------------

Parents
  • TKYさん、こんにちは。NoMaYです。

    CS+のバグのようですので、ルネサスさんにCS+を修正して頂くしかないかな、と思います。なお、e2 studioでは期待通り表示されました。(なお、私は、既にe2 studio/Eclipseに慣れている人以外にはe2 studioをお勧めしないです。e2 studioはトラブルに遭遇する可能性がCS+の10倍ぐらいあるような印象があります(全くの私の個人の感想です)。)

    CS+バグ:

    (1) C++ソースにおいてブロック内ローカル変数をローカル変数ウィンドウやウォッチウィンドウで見ることが出来ない(Cソースでは可)
    (2) tryブロックやcatchブロックに関しても同様である

    [追記] 15:00

    現象再現プロジェクトのファイル一式を以下のzipファイルに固めました。

    issue_RX64M_cpp_watch_20221018.zip

    [ここまで追記]

    以下、CS+とe2 studioの画面コピーです。(CS+ V8.08 + CC-RX V3.04 + e2 studio 2022-07 を使用しました。)

    CS+ではC++ソースにおいてブロック内ローカル変数をローカル変数ウィンドウやウォッチウィンドウで見ることが出来ない



    CS+ではCソースにおいてはブロック内ローカル変数をローカル変数ウィンドウやウォッチウィンドウで見ることが出来る



    e2 studioではC++ソースにおいてブロック内ローカル変数をローカル変数ウィンドウやウォッチウィンドウで見ることが出来る



    e2 studioではC++ソースにおいてtryブロック(やcatchブロック)でもブロック内ローカル変数をローカル変数ウィンドウやウォッチウィンドウで見ることが出来る


     

Reply
  • TKYさん、こんにちは。NoMaYです。

    CS+のバグのようですので、ルネサスさんにCS+を修正して頂くしかないかな、と思います。なお、e2 studioでは期待通り表示されました。(なお、私は、既にe2 studio/Eclipseに慣れている人以外にはe2 studioをお勧めしないです。e2 studioはトラブルに遭遇する可能性がCS+の10倍ぐらいあるような印象があります(全くの私の個人の感想です)。)

    CS+バグ:

    (1) C++ソースにおいてブロック内ローカル変数をローカル変数ウィンドウやウォッチウィンドウで見ることが出来ない(Cソースでは可)
    (2) tryブロックやcatchブロックに関しても同様である

    [追記] 15:00

    現象再現プロジェクトのファイル一式を以下のzipファイルに固めました。

    issue_RX64M_cpp_watch_20221018.zip

    [ここまで追記]

    以下、CS+とe2 studioの画面コピーです。(CS+ V8.08 + CC-RX V3.04 + e2 studio 2022-07 を使用しました。)

    CS+ではC++ソースにおいてブロック内ローカル変数をローカル変数ウィンドウやウォッチウィンドウで見ることが出来ない



    CS+ではCソースにおいてはブロック内ローカル変数をローカル変数ウィンドウやウォッチウィンドウで見ることが出来る



    e2 studioではC++ソースにおいてブロック内ローカル変数をローカル変数ウィンドウやウォッチウィンドウで見ることが出来る



    e2 studioではC++ソースにおいてtryブロック(やcatchブロック)でもブロック内ローカル変数をローカル変数ウィンドウやウォッチウィンドウで見ることが出来る


     

Children
  • NoMaYさん、こんにちは。TKYです。

    回答ありがとうございます。
    確かにe2 studioでは期待通りの表示をしているのでCS+のバグみたいですね。
    (私もEclipse系列の開発環境を使ったときに色々トラブルにあったので
    あまりe2 studioは使いたくないかなと(全くの私の個人の感想です)。)

    私も質問後色々確認していたのですが、ブロック内で少し処理を入れると、
    ブロック内で宣言したローカル変数がローカル変数ウィンドウに表示されました。
    もしかすると最適化はなしにしているのに、ブロック内は最適化されているのかも
    しれないと思ってきました。(どちらにせよCS+のバグと思われますが)

    以下、CS+の画面コピーです。
    ブロック内に iの宣言とfor文を追加しました。
    そうするとローカル変数ウィンドウに変数 i と vb が表示されました。