2016-04-10 6 views
0

Ich stoße auf ein sehr seltsames Problem. Ich verwende den Schritt, um meinen Code zu debuggen. Ich wurde erwartet, dass der Cursor Zeile für Zeile der Reihe nach verschoben werden sollte. Aber das folgende Phänomen trittCursor springt auf und ab mit Schritt über 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 } 

Die seltsame Sache ist folgende: Der Cursor bewegt sich zunächst 3 Zeile, versuchen, eine Zufallszahl zu erzeugen, dann bewegt er Linie 4 (sieht aus wie Zeile 3 bereits ausgeführt wurde) , aber dann bewegt es sich zurück zu Zeile 3 und bewegt sich dann zu Zeile 4, dann führt es die Zeile 4 aus und druckt die Zufallszahl aus. Warum bewegt sich der Cursor zurück?

Antwort

0

Es ist wahrscheinlich, dass Sie Ihren Code mit den Standardoptimierungseinstellungen Ihres Compilers kompiliert haben, was dem Compiler mehr Freiheit bei der Neuanordnung von kompiliertem Code zu Optimierungszwecken gibt.

Wie Sie festgestellt haben, macht dies das Debuggen zu einer schmerzhaften Erfahrung.

Deaktivieren Sie alle Optimierungseinstellungen Ihres Compilers. Das lässt den generierten Code etwas langsamer laufen, erleichtert aber das Debuggen.

+0

Wenn ich versuche, einige Variablen zu sehen, sagt es auch "wegen der Optimierung, die Variable ist nicht verfügbar" so etwas. Also ich denke du hast Recht. Wie deaktiviere ich diese Optimierungseinstellung? Es tut mir leid, ich bin sehr neu in C++ – ftxx

+0

Sie haben nichts zu entschuldigen. Das ist eine berechtigte Frage. –

+0

Verschiedene Compiler funktionieren anders. Überprüfen Sie die Dokumentation für Ihren C++ - Compiler. –

Verwandte Themen