Visual Studio 2012 RC を使用して一部の C++ コードをデバッグしているときに、クラス メンバー関数とメンバー変数の値にブレーク ポイントがある奇妙な動作に気付きました。
クラス メンバー関数にブレーク ポイントを設定すると、VS 2012 は関数の中かっこにブレーク ポイントを配置します。これで、関数で使用されるメンバー変数にカーソルを合わせると、値は常に「初期化されていません」になります。ただし、F10 キーを押して次の行 (関数の最初の行) に進むと、メンバー変数が正しい値に変更されるようになりました。
これは、メンバー関数の最初の行に入るまで、クラスのメンバー変数の値が読み込まれないように見えます。しかし、これは非常に紛らわしいです - 中括弧を壊すポイントは何でしょうか? (関数にブレークポイントを設定するときのデフォルトです。)
クラスメンバー関数の中断:
メンバー変数active
はtrue
(実際にはそうではありません!)
F10 で次の行に進む:
メンバー変数は(正しい) とactive
呼ばれるようになりました。false
ここに何か不足していますか、それとも Visual Studio 2012 RC の実際のバグですか?
編集: Visual Studio 2010 のコピーを見つけて、これを試しました。ブレークポイントに関する動作は同じです。違いは、IntelliSense が状況を処理する方法にあります。VS 2010 では、IntelliSense は中括弧を壊してもツールヒントをまったくポップアップしません。VS 2012 ではツールヒントが常に表示されます。混乱を避けるために、VS 2010 の動作の方がはるかに優れていると思います。