2012-04-26 9 views
5

Si esta es la estructura de mi códigoBGF: Fuerza a través de un comunicado

if(0) 
{ 
    // Some code 
} 

Cuando GDB es en la línea 1 anterior, si lo hago entonces next// Some code no se ejecutará.

¿Hay alguna manera de decirle a GDB que ejecute el código dentro de la instrucción if?

+5

El código aún no podría existir si el compilador tuvo un mínimo de optimizaciones. – pmg

Respuesta

3

Puede saltar a // Some code después de parar en if declaración en GDB, a menos que // Some code no se optimizó a cabo, vea 17.2 Continuing at a Different Address. Suponiendo que se detuvo en if, puede:

jump +2 
+1

¡Gracias! Eso era exactamente lo que estaba buscando. – Randomblue

6

Puedo proponerle una solución. Tener una variable temporal int i=0 y luego hacer lo que si

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

Al llegar a la posición deseada con gdb. Establecer i en 1 mediante

set i = 1 

y luego se ejecutará el bucle. Por supuesto, después del ciclo tendrá que reiniciarlo si no quiere que se ejecute todo el tiempo.

+0

Sí, estaba pensando en eso. Esperaba algo menos hacky. – Randomblue

+1

@Randomblue Y tener una declaración 'if (0) {}' en tu código ¿ya no es hacky? – HonkyTonk

+1

@HonkyTonk: Bueno, en realidad mi declaración 'if' no es tan tonta; era solo para ilustrar. En la vida real tengo 'if (someFunction())' donde 'someFunction()' se evalúa a '0' la mayor parte del tiempo. – Randomblue

-2

Cambie el if (0) al if (1) si desea que se ejecute su código en la instrucción if.

-2

0 significa falso, por lo que no entra en si el rizo, utilice

if(1) 
Cuestiones relacionadas