1

Visual Studio 2005 で大規模なプロジェクトの一部をデバッグしていて、コードを 1 行ずつ実行しています。

int speed = this->values.speed;
int ref = this->values.ref_speed;

最初の行を通過すると、values.speed の値は 61 になりますが、何らかの理由で speed に値 58 が割り当てられます。2 行目以降、values.ref_speed の値は 58 ですが、ref には値 30 が割り当てられます。 .

一時停止すると、元の値が実際にはそれぞれ 61 と 58 であることがわかりますが、格納される値は異なります。

この動作の原因は何ですか?

4

3 に答える 3

6

これは、values 構造体の定義がヘッダー ファイルで変更され、すべてのオブジェクト ファイルが再コンパイルされたわけではない場合に発生する可能性があります。次に、このファイル内のコードが使用している構造の「マップ」が、残りのコードと一致しない可能性があります。これは、変数の 1 つが他の変数の値を持っているように見える理由を説明できます。

または、何らかの理由で Visual Studio .pdb ファイルが更新されず、Visual Studio が古い場所で変数を探しています。

于 2009-06-01T19:43:30.223 に答える
1

クレイジー。名前も値である this->values と同じタイプのローカル変数を持っている可能性はありますか?

于 2009-06-01T19:40:18.810 に答える
0

これをデバッグ モードまたはリリース モードで実行していますか? リリース モードで実行している場合、または最適化をオンにしている場合、コンパイラはパフォーマンスを向上させるために順序を変更している可能性があり、奇妙な結果になる可能性があります。これは、実際の実行で何かが間違っているという意味ではありませんが、ステップスルーするのが混乱する可能性があります.

于 2009-06-01T19:29:41.720 に答える