使用step-overdebugging上下跳转光标

cursor jump up and down using step over debugging

本文关键字:光标 上下 step-overdebugging 使用      更新时间:2023-10-16

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

    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行并打印出随机数。为什么光标向后移动?

很可能是使用编译器的默认优化设置编译代码的,这使编译器可以更自由地重新排序编译的代码,以达到优化目的。

正如您所发现的,这使得调试成为一种痛苦的体验。

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