2016-04-10 6 views
0

非常に奇妙な問題が発生しました。私は私のコードをデバッグするためにステップオーバーを使用しています。私はカーソルが行ごとに順番に動くはずです。しかし、次のような現象が発生するデバッグのステップオーバーを使用してカーソルが上下にジャンプ

using namespace std; 
    ranlux48_base generator(1); 
    uniform_real_distribution<double> uniform(0.0, 1.0); 

1 int main() 
2 { 
3  double R1 = uniform(generator); 
4  cout << R1 << endl; 
5  if (R1 < pH) 
6  { 
7   Quality[i] = vH; 
8  } 
9  else 
10  { 
11   Quality[i] = vL; 
12  } 
13  cout << Quality[i] << endl; 
14 } 

奇妙なことです以下:カーソルは最初、それは4行目に移動し、3行目の乱​​数を生成しようとする移動(ライン3が既に実行されているように見えます)その後、3行目に戻り、4行目に移動すると、4行目が実行され、乱数が出力されます。なぜカーソルが戻ってきますか?

答えて

0

コンパイラのデフォルトの最適化設定を使用してコードをコンパイルした可能性があります。これは、最適化の目的で、コンパイル済みのコードの並べ替えの自由度を高めます。

あなたが発見したように、これはデバッグを辛い経験にします。

コンパイラが提供するすべての最適化設定をオフにします。これにより、生成されたコードは少し遅くなりますが、デバッグは容易になります。

+0

私はいくつかの変数を見ようとすると、「最適化のために、その変数は利用できません」と言います。だから私はあなたが正しいと思います。この最適化設定を無効にするにはどうすればよいですか?申し訳ありません、私はC++にはとても新しいです – ftxx

+0

あなたは何も謝罪することはありません。これは正当な質問です。 –

+0

異なるコンパイラの動作は異なっています。 C++コンパイラのドキュメントを確認してください。 –

関連する問題