2012-04-26 3 views
5

Questa è la struttura del mio codiceGDB: Forza attraverso un'istruzione if

if(0) 
{ 
    // Some code 
} 

Quando GDB è alla linea 1 di cui sopra, se lo faccio next quindi non saranno eseguiti // Some code.

C'è un modo per dire a GDB di eseguire il codice all'interno dell'istruzione if?

+5

Il codice potrebbe non esistere anche se il compilatore ha avuto un minimo di ottimizzazioni. – pmg

risposta

3

È possibile passare alla // Some code dopo l'arresto su if dichiarazione in gdb, a meno che non era // Some code ottimizzato fuori, vedi 17.2 Continuing at a Different Address. Supponendo che si fermò sul if, è possibile:

jump +2 
+1

Grazie! Era esattamente quello che stavo cercando. – Randomblue

6

Posso solo proporre una soluzione alternativa. Avere una variabile temporanea int i=0 e poi fare il caso come

if(i==1){ 
    //some code 
} 

Quando si raggiunge la posizione desiderata con gdb. Impostare i-1 utilizzando

set i = 1 

e quindi verrà eseguito il ciclo. Ovviamente dopo il ciclo dovrai resettarti io se non vuoi che venga eseguito ogni volta.

+0

Sì, ci stavo pensando. Speravo in qualcosa di meno hacky. – Randomblue

+1

@Randomblue E avere un'istruzione 'if (0) {}' nel codice non è già hacky? – HonkyTonk

+1

@HonkyTonk: Beh, in realtà la mia affermazione "if" non è così stupida; era solo per illustrazione. Nella vita reale ho 'if (someFunction())' dove 'someFunction()' valuta per '0 la maggior parte delle volte. – Randomblue

-2

Modificare lo if (0) in if (1) se si desidera che il proprio codice nell'istruzione if venga eseguito.

-2

0 significa falso, in modo da non entrare in se loop, utilizzare

if(1)