変数がウォッチできない。 – プログラミング – Home

変数がウォッチできない。
 
通知
すべてクリア

[解決済] 変数がウォッチできない。


める
 める
(@める)
ゲスト
結合: 21年前
投稿: 62
Topic starter  

お世話になります。学習用にサンプルソースを作ってまして、
デバッグで詰まってます。どなたかアドバイス下さい。

class BBB;

class AAA{
public:
AAA();
~AAA();
void Func01();
void Func02();
BBB* GetBBB();
int bbb;
private:
int aaa;
BBB* bbb_;
};

class BBB {....};

AAA::AAA(){
aaa = 123;
bbb = 456;
}

ひとまずこんな感じのクラスを作り、main関数で

void main()
{
AAA *test01 = new AAA();
AAA test02;

test02.bbb = 1 // ☆
cout << bbb: << test02.bbb << endl;

(以下略)
}
☆でブレークを張って確認したのですがtest01は、new AAA()としているのにも
関わらず、VC上のウォッチで確認すると「シンボルが見つかりません」と表示
されます。(test01にメモリが割り当てられていないと言う解釈?)

また実体を宣言してるtest02の方は確認すると何故かaaaにもbbbにも
値が格納されてなく不定値が入っています。期待値はaaa=123、bbb=456ですよね?

その後ステップ実行すると、何故かtest02.aaaに1が格納されてしまうのですが、
しかしコンソールには正しくbbb:1と表示されます。
省略はしましたがこの後も、Func01()やFunc02()をコールする処理はあるのですが、
期待する結果を得られています。
今までVC6.0を使っており、今更ながらVC2005を使い始めたのですが、単純なC++の
コーディングなので、別段違いを意識しないで使っています。
(気をつけるのは文字列の扱いぐらいでしょうか?)
実はメモリの使い方(?)やら特別な扱いや設定で問題があるのでしょうか?

環境は、WinXP(SP2)+VC2005(SP1)で、Win32コンソールアプリで作ってます。
よろしくお願いします。


引用未解決
トピックタグ
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

今、2005はアンインストールしたので確認できませんが、

> 実はメモリの使い方(?)やら特別な扱いや設定で問題があるのでしょうか?

このようなことはなかったと思います。
掲載されたコードをコンパイルできるように最小限手直しして、
2003で試したところ再現しませんでした。
めるさんの勘違いのため、省略した処理が影響をあたえているかもしれませんので、
その可能性をつぶすために、includeも含め、最小限の再現するコードを
書いてみてはどうでしょうか。
そのとき省略した処理が再現に不要ならば完全に削除し、
そのままコンパイルできる状態にしてください。


返信引用
める
 める
(@める)
ゲスト
結合: 21年前
投稿: 62
Topic starter  

たいちうさんありがとうございます。

別のプロジェクトにコピーして清書(?)して
やると上手く動いたので、ソースの問題ではないと思い、
元々のプロジェクトの設定を良く見直したところ、

構成マネージャーがReleaseになっていました。
毎回ソースを修正してビルドしていたのはReleaseビルドで、
デバッグしていたのは更新されていないDebugビルドのもので
やっていたからなのかなぁ?と・・・
Debugに戻してやってみたところ、元のソースでもちゃんと
アドレス割り当たりました。

ブレークポイントも張れたり張れなかったりでしたので、
腑には落ちなかったのですが・・・。
くだらない凡ミスですいません。
お手数お掛けしました。ありがとうございます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました