2014-12-09 7 views
5

Angenommen, ich habe eine Schleife, die 100-mal iteriert und ich möchte 50 Iterationen überspringen, aber ich möchte fortfahren drücken next von dort auf jeder Zeile zu sehen.Wie Überspringen einer Anzahl von Iterationen einer Schleife in GDB?

Ich möchte keinen Haltepunkt nach der Schleife festlegen, weil ich auf diese Weise alle Iterationen überspringen und nicht nur die Zahl, die ich beabsichtige.

Gibt es eine Möglichkeit, dies in GDB zu tun? Wie?

P.S. Ich möchte nicht next von Anfang bis Ende drücken. Es ist zeitaufwendig ...

+0

mit Pause Bedingungen ist. – yeyo

+0

OK. Aber in meinem Fall befindet sich die gegebene Schleife innerhalb einer Hilfsfunktion, die sich in einer anderen Datei befindet. Ich greife auf die Schleife mit "Schritt" in der Zeile, die ich die Funktion aufrufen. Wie setze ich eine Abbruchbedingung in einer Zeile einer anderen Datei? – Gabriel

+0

Jetzt weiß ich: Sie müssen nur Folgendes tun: b Dateiname: numberOfTheLine, zum Beispiel: b helper.c: 70. Vielen Dank. – Gabriel

Antwort

8

einen Haltepunkt in der Schleife setzen und dann c 50 rufen 50mal

Debugging with GDB

5,2 Continuing und Schritt

fortsetzen [ignore-count]
fortzusetzen c [ignorieren-zählen]
fg [ignorieren-zählen]
Fortsetzen Programmausführung an der Adresse, an der das Programm zuletzt gestoppt wurde; Irgendwelche Haltepunkte, die an dieser Adresse eingestellt sind, werden umgangen. Mit dem optionalen Argument ignore-count können Sie eine weitere Anzahl angeben, um einen Haltepunkt an dieser Stelle zu ignorieren. sein Effekt ist wie der von Ignorieren (siehe Abschnitt Break-Bedingungen). Das Argument ignore-count ist nur dann sinnvoll, wenn Ihr Programm aufgrund eines Breakpoints gestoppt wurde. Zu anderen Zeiten wird das Argument zum Fortfahren ignoriert.

-3

In C# zum Beispiel können Sie "weiter" machen, um Iteration zu überspringen. Beispiel für das Überspringen von Zahlen mit Mod 3 gleich 0, also werden die Zahlen 3, 9, 12, 15 ... übersprungen.

static void Main(string[] args) 
    { 
     for (int i = 1; i <= 50; i++) 
     { 
      if (i%3 == 0) 
      { 
       continue;      
      } 
      Console.WriteLine("{0}", i); 
     } 
     Console.ReadLine(); 
    } 
+0

Vielen Dank für Ihre Zeit, dies zu schreiben, aber meine Frage ist über GDB (GNU Debugger). – Gabriel

+0

die Frage war über die Verwendung von gdb, nicht, wie man eine Schleife, die 50 Iterationen überspringen wird – user3629249

5

könnten Sie bedingte Haltepunkte verwenden

break <lineno> if i > 50 

wo i der Schleifenindex

Verwandte Themen