2012-04-26 6 views
5

Das ist die Struktur meines CodesGDB: Kraft durch eine if-Anweisung

if(0) 
{ 
    // Some code 
} 

Wenn GDB in Zeile 1 oben ist, wenn ich next tun, dann wird // Some code nicht ausgeführt werden.

Gibt es eine Möglichkeit, GDB mitzuteilen, den Code innerhalb der if-Anweisung auszuführen?

+5

Der Code könnte nicht einmal existieren, wenn der Compiler ein Minimum an Optimierungen hatte. – pmg

Antwort

3

Sie können nach dem Anhalten auf if Anweisung in gdb zu // Some code springen, es sei denn, // Some code nicht optimiert geführt wurde, sehen 17.2 Continuing at a Different Address. Angenommen, Sie auf if gestoppt, können Sie:

jump +2 
+1

Danke! Genau das habe ich gesucht. – Randomblue

6

Ich kann Ihnen nur einen Workaround vorschlagen. Haben Sie eine temporäre Variable int i=0 und führen Sie dann die, wenn sie als

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

Wenn Sie die gewünschte Position mit GDB erreichen. Set i zu 1

set i = 1 

und anschließend wird die Schleife ausgeführt werden. Natürlich müssen Sie nach der Schleife Sie zurücksetzen, wenn Sie es nicht jedes Mal ausführen möchten.

+0

Ja, ich habe darüber nachgedacht. Ich hatte auf etwas weniger Hacky gehofft. – Randomblue

+1

@Randomblue Und eine 'if (0) {}' Anweisung in Ihrem Code ist nicht schon hacky? – HonkyTonk

+1

@HonkyTonk: Naja, eigentlich ist meine 'if' Aussage nicht so dumm; es war nur zur Veranschaulichung. Im wirklichen Leben habe ich 'if (someFunction())' wobei 'someFunction()' die meiste Zeit auf '0' auswertet. – Randomblue

-2

Ändern Sie die if (0) in if (1), wenn der Code in der if-Anweisung ausgeführt werden soll.

-2

0 bedeutet falsch, so wird es in der Eingabe nicht, wenn Schleife verwenden

if(1)