A.23 Lösungen zu Kapitel 30 

Makefile und Debugging
Erstellen Sie für den folgenden C-Quellcode eine Makefile. Aktivieren Sie beim Kompilieren die Debugging-Option, und führen Sie das fertig übersetzte Programm im GNU-Debugger aus.
#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; }
Listing A.34 test.c
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.
tp : test.c gcc -g -o tp test.c -lm
Listing A.35 Makefile
Sie starten das Programm im Debugger mit dem Befehl run.
$ 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
Listing A.36 gdb