A.23 Lösungen zu Kapitel 30
Makefile und Debugging
Erstellen Sie für den folgenden C-Quellcode ein Makefile. Aktivieren Sie beim Kompilieren die Debugging-Option, und führen Sie das fertig übersetzte Programm im GNU-Debugger aus.
Listing A.34 test.c
#include <stdio.h>
#include <math.h>
int main(int argc, char *argv[]) {
double k=0.f;
while(k<=3.2) {
printf("sin(%f)=%f\n", k, sin(k));
k+=0.1;
}
return 0;
}
Antwort:
Um das Programm zu übersetzen, muss dem gcc-Compiler die Option -g zur Aktivierung des Debuggings übergeben werden. Zudem verwendet das Programm die Sinus-Funktion sin() aus der mathematischen Library, die wir via -lm einlinken.
Listing A.35 Makefile
tp : test.c
gcc -g -o tp test.c -lm
Sie starten das Programm im Debugger mit dem Befehl run.
Listing A.36 gdb
$ gdb ./tp
GNU gdb 6.1
...
...
(gdb) run
Starting program: /tmp/tp
sin(0.000000)=0.000000
sin(0.100000)=0.099833
sin(0.200000)=0.198669
sin(0.300000)=0.295520
sin(0.400000)=0.389418
sin(0.500000)=0.479426
sin(0.600000)=0.564642
sin(0.700000)=0.644218
sin(0.800000)=0.717356
sin(0.900000)=0.783327
sin(1.000000)=0.841471
sin(1.100000)=0.891207
sin(1.200000)=0.932039
sin(1.300000)=0.963558
sin(1.400000)=0.985450
sin(1.500000)=0.997495
sin(1.600000)=0.999574
sin(1.700000)=0.991665
sin(1.800000)=0.973848
sin(1.900000)=0.946300
sin(2.000000)=0.909297
sin(2.100000)=0.863209
sin(2.200000)=0.808496
sin(2.300000)=0.745705
sin(2.400000)=0.675463
sin(2.500000)=0.598472
sin(2.600000)=0.515501
sin(2.700000)=0.427380
sin(2.800000)=0.334988
sin(2.900000)=0.239249
sin(3.000000)=0.141120
sin(3.100000)=0.041581
Program exited normally.
(gdb) quit
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.