質問失礼いたします。
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)
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ブロック)でもブロック内ローカル変数をローカル変数ウィンドウやウォッチウィンドウで見ることが出来る
NoMaYさん、こんにちは。TKYです。
回答ありがとうございます。確かにe2 studioでは期待通りの表示をしているのでCS+のバグみたいですね。(私もEclipse系列の開発環境を使ったときに色々トラブルにあったのであまりe2 studioは使いたくないかなと(全くの私の個人の感想です)。)
私も質問後色々確認していたのですが、ブロック内で少し処理を入れると、ブロック内で宣言したローカル変数がローカル変数ウィンドウに表示されました。もしかすると最適化はなしにしているのに、ブロック内は最適化されているのかもしれないと思ってきました。(どちらにせよCS+のバグと思われますが)
以下、CS+の画面コピーです。ブロック内に iの宣言とfor文を追加しました。そうするとローカル変数ウィンドウに変数 i と vb が表示されました。