C debug funkcija

Damir Dezeljin programing at nib.si
Thu Aug 22 19:46:01 CEST 2002


Ciao.

Kaj mi zna kdo svetovati kako naj bi naredil eno PORTABILNO debug 
funkcijo, ki bi delala nekaj podobnega kot sledeca (ta dela samo z GCC):
----
#ifdef DEBUG
#define DbgPrint(fmt, a...)   _DbgPrint(fmt, ## a)
#else
#define DbgPrint(a, b, ...)   ;
#endif

void _DbgPrint(int level, char *fmt, ...) {
    va_list argList;
    char timeBuffer[LEN];

    va_start(argList, fmt);
    vfprintf(stdout, fmt, argList);
    fprintf(stdout, "\n");
    va_end(argList);

    return;
}
----

Vsak nasvet je dobrodosel.

Imam eno idejo ... kaj pa ce stvar naredim tako:
----
#ifdef DEBUG
#define DDL 1
#else
#define DDL 0
#endif

void DbgPrint(int level, char *fmt, ...) {
    do {
        if (DDL) {
            va_list argList;
            char timeBuffer[LEN];

            va_start(argList, fmt);
            vfprintf(stdout, fmt, argList);
            fprintf(stdout, "\n");
            va_end(argList);
            return;
        }
    } while(0);
}
----
Kaj v tem primeru ce ne bom kompajlal z -DDEBUG, kaj kdo ve ce so 
MS VC, HP UX, gcc ... kompajlerji dovolj 'pameteni', da bodo to funkcijo 
kar preskocli in da ne bo nic overheda? << ja vzami debugger in poglej ... 
poskusam z GDB in ne ugotovim nic pametnega ... enak rezultat imam z wdb 
na HP UX ... mogoce pa debugerja ne znam uporabljat :)

Lp,
Dezo




More information about the lugos-prog mailing list