none
デバッガで変数をウォッチできない RRS feed

  • 質問

  • デバッガでの変数ウォッチがうまく使えない場合があるのですが、これは使い方がおかしいのでしょうか。投稿が見当たらなかったので、質問させてください。

    ①新規プロジェクト作成で、「CLR」→「Windowsフォームアプリ」とし、フォームに適当にボタンなどを配置し、メンバ関数(ボタン押下時の関数等)内にて、例えば以下の記述をする。

    Bitmap^ image1;
    int x,y;
    image1 = gcnew Bitmap( "C:\\tmp.bmp",true); //←ここは実在するビットマップへのパスを入れます
    x=image1->Width;
    y=image1->Height;

    そして、デバッグモードでコンパイルし、ステップ実行で上記コード部を実行すると、
    変数x, y には正しく画像のサイズが格納されるにもかかわらず、ウォッチウィンドウでimage1->Width とか image1->Height を見ても、
    「エラー:'image1->Width'は存在しません」

    となり、変数が監視できない。



    グローバル変数(例:gTmp1とする)を宣言しておき、上記の関数内で参照すると、もちろん正しく値がやり取りできる。しかし、ウォッチウィンドウでは
    「エラー:識別子'gTmp1'はスコープ外です」
    となってしまい、監視できない。

    以上のような現象が発生しています。デバッグの効率が悪くて困っているのですが、皆様の環境ではいかがでしょうか。

    2006年5月24日 14:59

すべての返信

  • ウォッチのスコープを確認してください。

    できればデバッガでとめて、その変数をウォッチペインにドロップしてください。

    2006年5月24日 15:11
  • ありがとうございます。アドバイスいただいていろいろと試しているうちに、①の方(image1->Width のウォッチ)は解決しました。

    image1 = gcnew Bitmap( "filename.bmp",true);

    という行を過ぎてインスタンスを初期化しても、自動的にはウォッチペインが更新さないようで、リロードマークをクリックしたところ、正しく表示されることがわかりました。

    ただ、②のグローバル変数の方は相変わらずです。

    ウォッチペインにドロップしてみたり、名前空間を前につけてみたりしたのですが、やはりダメなようです。

    ブレークしている箇所で、ウォッチしたい変数を参照できる(ローカル変数にコピーしたりできる)ことは確認しているのですが、、、。

     

    2006年5月25日 15:29