光标使用步调调试来上下跳转

时间:2016-04-10 00:22:16

标签: c++ debugging

我遇到了一个非常奇怪的问题。我正在使用步骤来调试我的代码。我原以为光标应该按顺序逐行移动。但是会发生以下现象

    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   }

奇怪之处如下:光标首先移动到第3行,尝试生成一个随机数,然后移动到第4行(看起来第3行已经执行),但随后又移回第3行,然后移动到第4行,然后执行第4行并打印出随机数。为什么光标会移回?

1 个答案:

答案 0 :(得分:0)

您可能使用编译器的默认优化设置编译代码,这为编译器提供了更大的自由重新排序编译代码,以便进行优化。

正如您所发现的那样,这会使调试成为一种痛苦的经历。

关闭编译器提供的所有优化设置。这会使生成的代码运行得慢一点,但可以更容易地调试它。