2012-04-26 10 views
5

Jest to struktura mojego koduGDB: Siła poprzez if

if(0) 
{ 
    // Some code 
} 

Kiedy GDB jest w wierszu 1 powyżej, jeżeli robię next następnie // Some code nie zostanie wykonany.

Czy istnieje sposób, aby powiedzieć GDB, aby wykonać kod wewnątrz instrukcji if?

+5

Kod może nawet nie istnieć, jeśli kompilator ma minimum optymalizacji. – pmg

Odpowiedz

3

Możesz przeskoczyć do // Some code po zatrzymaniu na if oświadczenie w gdb, chyba // Some code nie została zoptymalizowana na zewnątrz, patrz 17.2 Continuing at a Different Address. Zakładając, że zatrzymałeś się na if, możesz:

jump +2 
+1

Dzięki! Właśnie tego szukałem. – Randomblue

6

Mogę tylko zaproponować obejście problemu. Mieć tymczasową zmienną int i=0 a następnie wykonaj jeśli jako

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

Po osiągnięciu żądanej pozycji z gdb. Ustaw i na 1, używając

i wtedy twoja pętla zostanie wykonana. Oczywiście po pętli będziesz musiał zresetować i jeśli nie chcesz, aby był wykonywany za każdym razem.

+0

Tak, myślałem o tym. Miałem nadzieję na coś mniej hacky. – Randomblue

+1

@Randomblue I posiadanie wyrażenia 'if (0) {}' w twoim kodzie nie jest już zhackowane? – HonkyTonk

+1

@HonkyTonk: Cóż, moje oświadczenie 'if' nie jest takie głupie; to było po prostu dla zilustrowania. W prawdziwym życiu mam 'if (someFunction())' gdzie 'someFunction()' przez większość czasu przetwarza "0". – Randomblue

-2

Zmień if (0) na if (1), jeśli chcesz, aby twój kod w instrukcji if został wykonany.

-2

0 oznacza fałsz, więc nie będzie zawarcie jeśli pętla, użyj

if(1)