2014-12-09 12 views
5

Supponiamo di avere un ciclo che itererà 100 volte e voglio saltare 50 iterazioni ma voglio continuare a premere next da lì in poi per vedere ogni linea.Come saltare un numero di iterazioni di un loop in GDB?

Non voglio impostare un punto di interruzione dopo il ciclo, perché in questo modo salterò tutte le iterazioni e non solo il numero che intendo.

C'è un modo per farlo in GDB? Come?

P.S. Non voglio continuare a premere next dall'inizio alla fine. È dispendioso in termini di tempo ...

+0

utilizzando condizioni di interruzione. – yeyo

+0

OK. Ma nel mio caso il ciclo dato si trova all'interno di una funzione di aiuto che si trova in un altro file. Accedo al loop usando "step" sulla linea che chiamo la funzione. Come posso impostare una condizione di interruzione su una riga di un altro file? – Gabriel

+0

Ora lo so: devi solo fare questo: b nomefile: numberOfTheLine, ad esempio: b helper.c: 70. Grazie. – Gabriel

risposta

8

Impostare un punto di interruzione nel ciclo e quindi chiamare c 50 di continuare a 50 volte

Debugging with GDB

5,2 proseguire e intensificare

continuare [ignorare-count]
c [ignore-conteggio]
fg [ignore-conteggio]
Riprendere l'esecuzione del programma , all'indirizzo in cui è stato interrotto il programma; tutti i punti di interruzione impostati su tale indirizzo vengono ignorati. L'argomento facoltativo ignore-count consente di specificare un ulteriore numero di volte per ignorare un punto di interruzione in questa posizione; il suo effetto è come quello di ignorare (si veda la sezione Condizioni di interruzione). L'argomento ignore-count è significativo solo quando il programma si è fermato a causa di un breakpoint. Altre volte, l'argomento per continuare viene ignorato.

-3

In C#, ad esempio, puoi "continuare" per saltare l'iterazione. Esempio di saltare numeri con mod 3 uguale a 0, quindi i numeri 3, 9, 12, 15 ... verranno saltati.

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

Grazie per aver scritto questo, ma la mia domanda riguarda GDB (GNU Debugger). – Gabriel

+0

la domanda riguardava l'uso di gdb, non come codificare un ciclo che salterà 50 itterazioni – user3629249

5

È possibile utilizzare i punti di interruzione condizionali

break <lineno> if i > 50 

dove i è l'indice del ciclo

Problemi correlati