debugging package
Thomas J Keller
mc68020 at gilbbs.UUCP
Sun Sep 28 19:53:51 AEST 1986
I have sent out the debugging package we use here. It is simple to use,
quite easy to get along with, and fairly powerful. I have not had the
opportunity to test it on anything but XENIX 3.01.00 on a Tandy 6000, and
a slightly modified version of it on a SUN workstation. This is *NOT* a
shar file.
As the code is commented rather thouroughly, no separate documentation
should be necessary.
Please note carefully the attribution and copyright notices, as well as
the permission to use. I hope someone finds this package as useful as we
have.
-------------------------------- cut here ------------------------------
/*----------------------------------------------------------------------*\
|
| debug.h
|
| this file contains the defines necessary to implement the
| conditional compilation of debugging macros.
|
| 86/01/25 tjk & gsm
|
| XENIX 3.01.00 Tandy 6000
|
| USAGE: to utilize this debugging tool, simply include instances
| of the type specific debug macros liberally throughout your code.
| If you are using types not included, create a debug macro for the
| type you wish to include by following the format of the existing
| macros. Then simply use a -DDEBUG in your cc call to enable the
| debugging macros. It is necessary that debug.h be included in
| your source AFTER stdio.h.
|
| Copyright 1986 Thomas J Keller, Gregory S. Melancon
|
| NOTE: the macros in this package are based on material published
| by Thomas D. Webb in Vol 3, No 2 of Computer Language Magazine.
|
| Permission is hereby granted for the use of this software for
| any use, with the stipulation that the copyright and attribution
| notices remain intact, and that the authors and Thomas D. Webb
| are credited if used in commercial software.
|
\*----------------------------------------------------------------------*/
#ifdef DEBUG
/* in DEBUG mode, PASSTHRU translates debug macros to fprintf statements
* by macro substitution.
*/
# define PASSTHRU(statements) statements
#else
/* in normal mode, PASSTHRU translates debug macros into null strings
* by macro substitution.
*/
# define PASSTHRU(statements) /* empty */
#endif
/* debug macro definitions */
/*----------------------------------------------------------------------*/
/* print a char variable */
# define DCHAR(userText, charVar) \
PASSTHRU(if (charVar == ' ') \
fprintf(stderr, "DEBUG: %s: BLANK char\n", \
userText); \
else if (charVar == NULL) \
fprintf(stderr, "DEBUG: %s: NULL char\n", \
userText); \
else \
fprintf(stderr, "DEBUG: %s: %c\n", \
userText, charVar))
/*----------------------------------------------------------------------*/
/* print a short integer variable */
# define DSHORT(userText, shortVar) \
PASSTHRU(fprintf(stderr, "DEBUG: %s: %d\n", userText, shortVar))
/*----------------------------------------------------------------------*/
/* print an integer variable */
# define DINT(userText, intVar) \
PASSTHRU(fprintf(stderr, "DEBUG: %s: %d\n", userText, intVar))
/*----------------------------------------------------------------------*/
/* print a long integer variable */
# define DLONG(userText, longVar) \
PASSTHRU(fprintf(stderr, "DEBUG: %s: %ld\n", userText, longVar))
/*----------------------------------------------------------------------*/
/* print an unsigned char variable */
# define DUCHAR(userText, ucharVar) \
PASSTHRU(fprintf(stderr, "DEBUG: %s: %u\n", userText, ucharVar))
/*----------------------------------------------------------------------*/
/* print an unsigned short integer variable */
# define DUSHORT(userText, ushortVar) \
PASSTHRU(fprintf(stderr, "DEBUG: %s: %u\n", \
userText, ushortVar))
/*----------------------------------------------------------------------*/
/* print an unsigned integer variable */
# define DUINT(userText, uintVar) \
PASSTHRU(fprintf(stderr, "DEBUG: %s: %u\n", userText, uintVar))
/*----------------------------------------------------------------------*/
/* print an unsigned long integer variable */
# define DULONG(userText, ulongVar) \
PASSTHRU(fprintf(stderr, "DEBUG: %s: %ul\n", \
userText, ulongVar))
/*----------------------------------------------------------------------*/
/* print a float variable */
# define DFLOAT(userText, floatVar) \
PASSTHRU(fprintf(stderr, "DEBUG: %s: %f\n", userText, floatVar))
/*----------------------------------------------------------------------*/
/* print a double float variable /*
# define DDOUBLE(userText, doubleVar) \
PASSTHRU(fprintf(stderr, "DEBUG: %s: %fl\n", \
userText, doubleVar))
/*----------------------------------------------------------------------*/
/* print a string variable */
# define DSTRING(userText, stringVar) \
PASSTHRU(if (stringVar[0] == NULL) \
fprintf(stderr, "DEBUG: %s: NULL string\n", \
userText); \
else \
fprintf(stderr, "DEBUG: %s: %s\n", \
userText, stringVar))
/*----------------------------------------------------------------------*/
/* print a debug message, no variables */
# define DMSG(userText) \
PASSTHRU(fprintf(stderr, "DEBUG: %s\n", userText))
/*----------------------------------------------------------------------*/
/* print a function entry message */
# define DENTER(funcName)\
PASSTHRU(fprintf(stderr, "DEBUG: %s >>>>>>>>>>>>>>>>\n", \
funcName))
/*----------------------------------------------------------------------*/
/* print a function exit message */
# define DEXIT(funcName) \
PASSTHRU(fprintf(stderr, "DEBUG: %s <<<<<<<<<<<<<<<<\n", \
funcName))
/*----------------------------------------------------------------------*/
/* print a function failure stop message */
# define DSTOP(funcName) \
PASSTHRU(fprintf(stderr, "DEBUG: %s FAILURE ################\n",
funcName))
/*---------------------------------------------------------------------*/
/* print an errno error message */
#define DERROR(funcName, userText) \
PASSTHRU(fprintf(stderr, "DEBUG: %s; %s: ", \
funcName, userText);\
perror(errno))
/*-------------- end of debug.h --------------*/
------------------------------ cut here ------------------------------------
--
Disclaimer: Disclaimer? DISCLAIMER!? I don't need no stinking DISCLAIMER!!!
tom keller "She's alive, ALIVE!"
{ihnp4, dual}!ptsfa!gilbbs!mc68020
(* we may not be big, but we're small! *)
More information about the Comp.sources.unix
mailing list