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))
    #endif

    int 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 TRUE

    entspricht 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.


Anmelden zum Antworten