108 lines
3.0 KiB
C
108 lines
3.0 KiB
C
/*
|
|
* mydebug.h - #include this file sometime after stdio.h
|
|
* Set MYDEBUG to 1 to turn on debugging, 0 to turn off debugging
|
|
*/
|
|
#ifndef MYDEBUG_H
|
|
#define MYDEBUG_H
|
|
|
|
#define MYDEBUG 0
|
|
|
|
#if MYDEBUG
|
|
/*
|
|
* MYDEBUG User Options
|
|
*/
|
|
|
|
/* Set to 1 to turn second level D2(bug()) statements */
|
|
#define DEBUGLEVEL2 1
|
|
|
|
/* Set to a non-zero # of ticks if a delay is wanted after each debug message */
|
|
#define DEBUGDELAY 0
|
|
|
|
/* Always non-zero for the DDx macros */
|
|
#define DDEBUGDELAY 50
|
|
|
|
/* Set to 1 for serial debugging (link with debug.lib) */
|
|
#define KDEBUG 1
|
|
|
|
/* Set to 1 for parallel debugging (link with ddebug.lib) */
|
|
#define DDEBUG 0
|
|
|
|
#endif /* MYDEBUG */
|
|
|
|
|
|
/* Prototypes for Delay, kprintf, dprintf. Or use proto/dos.h or functions.h. */
|
|
#include <clib/dos_protos.h>
|
|
void kprintf(UBYTE *fmt,...);
|
|
void dprintf(UBYTE *fmt,...);
|
|
|
|
/*
|
|
* D(bug()), D2(bug()), DQ((bug()) only generate code if MYDEBUG is non-zero
|
|
*
|
|
* Use D(bug()) for general debugging, D2(bug()) for extra debugging that
|
|
* you usually won't need to see, DD(bug()) for debugging statements that
|
|
* you always want followed by a delay, and DQ(bug()) for debugging that
|
|
* you'll NEVER want a delay after (ie. debugging inside a Forbid, Disable,
|
|
* Task, or Interrupt)
|
|
*
|
|
* Some example uses (all are used the same):
|
|
* D(bug("about to do xyz. variable = $%lx\n",myvariable));
|
|
* D2(bug("v1=$%lx v2=$%lx v3=$%lx\n",v1,v2,v3));
|
|
* DQ(bug("in subtask: variable = $%lx\n",myvariable));
|
|
* DD(bug("About to do xxx\n"));
|
|
*
|
|
* Set MYDEBUG above to 1 when debugging is desired and recompile the modules
|
|
* you wish to debug. Set to 0 and recompile to turn off debugging.
|
|
*
|
|
* User options set above:
|
|
* Set DEBUGDELAY to a non-zero # of ticks (ex. 50) when a delay is desired.
|
|
* Set DEBUGLEVEL2 nonzero to turn on second level (D2) debugging statements
|
|
* Set KDEBUG to 1 and link with debug.lib for serial debugging.
|
|
* Set DDEBUG to 1 and link with ddebug.lib for parallel debugging.
|
|
*/
|
|
|
|
|
|
/*
|
|
* Debugging function automaticaly set to printf, kprintf, or dprintf
|
|
*/
|
|
|
|
#if KDEBUG
|
|
#define bug kprintf
|
|
#elif DDEBUG
|
|
#define bug dprintf
|
|
#else /* else changes all bug's to printf's */
|
|
#define bug printf
|
|
#endif
|
|
|
|
/*
|
|
* Debugging macros
|
|
*/
|
|
|
|
/* D(bug( delays DEBUGDELAY if DEBUGDELAY is > 0
|
|
* DD(bug( always delays DDEBUGDELAY
|
|
* DQ(bug( (debug quick) never uses Delay. Use in forbids,disables,ints
|
|
* The similar macros with "2" in their names are second level debugging
|
|
*/
|
|
#if MYDEBUG /* Turn on first level debugging */
|
|
#define D(x) (x); if(DEBUGDELAY>0) Delay(DEBUGDELAY)
|
|
#define DD(x) (x); Delay(DDEBUGDELAY)
|
|
#define DQ(x) (x)
|
|
#if DEBUGLEVEL2 /* Turn on second level debugging */
|
|
#define D2(x) (x); if(DEBUGDELAY>0) Delay(DEBUGDELAY)
|
|
#define DD2(x) (x); Delay(DDEBUGDELAY)
|
|
#define DQ2(x) (x)
|
|
#else /* Second level debugging turned off */
|
|
#define D2(x) ;
|
|
#define DD2(x) ;
|
|
#define DQ2(x) ;
|
|
#endif /* DEBUGLEVEL2 */
|
|
#else /* First level debugging turned off */
|
|
#define D(x) ;
|
|
#define DQ(x) ;
|
|
#define D2(x) ;
|
|
#define DD(x) ;
|
|
#endif
|
|
|
|
|
|
#endif /* MYDEBUG_H */
|
|
|