[LC++]Producing a log of routine entry and exit

Keith Schincke kschin at unf.edu
Fri Aug 30 03:56:05 UTC 2002

I have borrowed the debuging macro's from the pam system on Linux. It
gives good messages that help in tracing and debuging code.

With a little bit of modification, you can generate debug messages for
various levels of debuging. I kept mine simple.

The code from one of my header files follow below the sig but the usage is

D(("Check variable = %d",check_var));
[main.c:main(15)] Check variable = 55

I often add D(("called")) to the top and bottom of functions of interest
to see if they are being called and are returning

Hope this and the other suggestions help.

Keith Schincke           My dawg is always with me.
Jacksonville, Fl               00 Spool - Wild at Heart
http://www.unf.edu/~kschin                           Email: kschin at unf.edu

#ifdef DEBUG
#include <stdarg.h>

static void _pam_output_debug_info(const char *file, const char *fn
                                   , const int line)
    fprintf(stderr,"[%s:%s(%d)] ",file, fn, line);

static void _pam_output_debug(const char *format, ...)
    va_list args;
    FILE *logfile;
    int must_close = 1;

    va_start(args, format);

    vfprintf(stderr, format, args);
    fprintf(stderr, "\n");


#define D(x) do { \
    _pam_output_debug_info(__FILE__, __FUNCTION__, __LINE__); \
    _pam_output_debug x ; \
} while (0)


#define D(x)                             do { } while (0)


More information about the tuxCPProgramming mailing list