GDB [[Inferior 1 (Prozess-2710) beendet mit code 06]] seltsame Ausgabe
Ich versuche zu beurteilen, die Leistung von einem C-Programm, also lief ich den debugger.
Dies ist das Programm:
#define swap(a, b) temp=a; a=b; b=temp;
#include <stdio.h>
main()
{
int i, j, temp;
i = 5;
j = 10;
temp = 0;
if(i > j)
swap(i, j);
printf("%d %d %d", i, j, temp);
}
Den Ausgabe dieses Programm 10 0 0
. Ich kann nicht sehen, wie es möglich.
Lege ich Pausen auf den Linien 6, 7, 8, 9, 10, GDB. Dies ist, was ich bekomme -:
(gdb) run
Starting program: /home/pritishc/Documents/a.out
Breakpoint 1, main () at ProbleminC.c:7
7 i = 5;
(gdb) print i
$1 = 0
(gdb) print j
$2 = 0
(gdb) continue
Continuing.
Breakpoint 3, main () at ProbleminC.c:8
8 j = 10;
(gdb) print i
$3 = 5
(gdb) print j
$4 = 0
(gdb) print temp
$5 = 32767
(gdb) continue
Continuing.
Breakpoint 4, main () at ProbleminC.c:9
9 temp = 0;
(gdb) print i
$6 = 5
(gdb) print j
$7 = 10
(gdb) print temp
$8 = 32767
(gdb) c
Continuing.
Breakpoint 5, main () at ProbleminC.c:10
10 if(i > j)
(gdb) print i
$9 = 5
(gdb) print j
$10 = 10
(gdb) print temp
$11 = 0
(gdb) c
Continuing.
10 0 0[Inferior 1 (process 2710) exited with code 06]
(gdb) print i
No symbol "i" in current context.
(gdb)
Was genau bedeutet das? Und warum auf der Erde ist er mir solche Ausgabe?
InformationsquelleAutor PritishC | 2014-01-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie definiert das makro, indem Sie sagen:
Den Präprozessor übersetzen würde Ihre
if
Zustand:Ändern Sie das makro:
oder vielleicht sogar mit einem
do ... while
Schleife:Den exit-code
6
eingehalten werden, ist der return-Wert vonprintf
. Zitat ausman 3 printf
:In Ihrem
main()
(eher machen Sie esint main()
), fügen SieDas macht Sinn. Es ist einfach nur makro-substitution. Nur eine Sache noch, was sind "Minderwertig 1" und " exit code 06?
Digital_Reality: das habe ich versucht. Während ich bin nicht immer 10 0 0 die swap nicht funktioniert. Die gibt es von mir 5 von 10 0. Edit: Naja es soll ja nicht zu funktionieren jetzt. Das ganze ist unter der if-Anweisung.
Der exit-code ist Mangels
return
immain()
, die verursacht, daß der Rückgabewert vonprintf
emittiert werden. Siehe den edit oben.InformationsquelleAutor devnull