2014-12-09 15 views
5

Załóżmy, że mam pętlę, która będzie iterować 100 razy i chcę pominąć 50 iteracji, ale chcę od tego momentu nacisnąć next, aby zobaczyć każdą linię.Jak pominąć pewną liczbę iteracji pętli w GDB?

Nie chcę ustawiać punktu przerwania po pętli, ponieważ w ten sposób pominę wszystkie iteracje, a nie tylko numer, który zamierzam.

Czy można to zrobić w GDB? W jaki sposób?

P.S. Nie chcę ciągle naciskać next od początku do końca. To czasochłonne ...

+0

stosując warunki złamać. – yeyo

+0

OK. Ale w moim przypadku dana pętla znajduje się wewnątrz funkcji pomocnika, która znajduje się w innym pliku. Mam dostęp do pętli za pomocą "kroku" w linii, którą nazywam funkcją. Jak ustawić warunek przerwania w linii innego pliku? – Gabriel

+0

Teraz wiem: wystarczy to zrobić: b filename: numberOfTheLine, na przykład: b helper.c: 70. Dzięki. – Gabriel

Odpowiedz

8

Ustawianie przerwania w pętli, a następnie wywołać C 50 dalej 50 razy

Debugging with GDB

5,2 Kontynuując i zwiększanie

dalej [ignorować count]
c [ignorowana liczba]
fg [ignorowana liczba]
Resume wykonanie programu, pod adresem, w którym ostatni program został zatrzymany; wszelkie punkty przerwania ustawione na ten adres są pomijane. Opcjonalny argument ignore-count pozwala określić dalszą liczbę razy, aby zignorować punkt przerwania w tej lokalizacji; jego efekt jest podobny do ignorowania (zob. sekcja Warunki przerwania). Argument ignore-count ma znaczenie tylko wtedy, gdy program został zatrzymany z powodu punktu przerwania. Innym razem, argument, aby kontynuować, jest ignorowany.

-3

Na przykład w C# można "kontynuować", aby pominąć iterację. Przykład przeskakiwania liczb przy mod 3 równy 0, więc liczby 3, 9, 12, 15 ... będą pomijane.

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

Dziękuję za poświęcony czas na napisanie tego, ale moje pytanie dotyczy GDB (GNU Debugger). – Gabriel

+0

pytanie dotyczyło użycia gdb, a nie kodowania pętli, która pominie 50 iteracji – user3629249

5

Można użyć warunkowe punkty przerwy

break <lineno> if i > 50 

gdzie i jest indeksem pętli

Powiązane problemy