Debugging
-
Hallo zusammen.
Ich habe in meinem Buch etwas übers Debugging nachgelesen. Nur leider sehe:
1. Dann Sinn nicht ganz.
2. Begreiffe ich das Programmbeispiel nicht.Der Sinn des Debuggings ist es doch, ein Programm Schritt für Schritt zu testen.
Hier nun das Beispiel:
/*
* file name: debug
* demonstrate conditional compilation
*/#include <stdio.h>
#include <stdlib.h>#if !defined(TRUE)
#define TRUE 1
#define FALSE 0
#endif#define DEBUG TRUE
#define BUGGED FALSE#if !defined(absolute)
#define absolute(x) ((x)<0 ? -(x) : (x))
#endifint main(void)
{
int cardinal = -10;
int result;result = absolute(cardinal);
#if DEBUG
printf("absolute(-10)=%d\n",result);
/* compile only if debug = TRUE */
#elif !BUGGED
printf("absoulute(1.23) = %f\n",absolute(1.23));
/* compile if DEBUG = FALSE and BUEGGED = FALSE */
#else
#error force an error
#endif
exit(EXIT_SUCCESS);
}Insbesonder ist mir unklar, was die Preprocessor-Befehle #if DEBUG usw sollen. Nach der Definition die wir oben gegeben haben:
- #define TRUE 1
- #define DEBUG TRUEentspricht doch #if DEBUG --> #if 1 --> also wenn 1.....
Die Zentrale Frage ist eigench, was macht dieses Programm?
Gruss
Raffael
-
benutz bitte Code-Tags
Das was das Programm macht ist nicht wirklich debugging, da man dazu einen Debugger benutzt. Was das Programm macht nennt man printf-debugging.
Debugging ist dazu da um Fehler im Programm ablauf zu finden.
Die Preprozessor Befehle wurden hier eingefügt um die "Debug" Ausgabe zu aktivieren, deaktivieren.
Der Preprozessor versteht genau wie das normale C if ein Wert != 0 als true (wahr) und einen Wert == 0 als false (falsch)
Um zu verstehen was das Programm macht, lass am besten einmal den C Precompiler drüber laufen.