home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / monitors / rsys / source.lha / src / RSysDebug.h < prev    next >
C/C++ Source or Header  |  1995-01-09  |  3KB  |  124 lines

  1. /*
  2. ***************************************************************************
  3. *
  4. * Datei:
  5. *    RSysDebug.h
  6. *
  7. * Inhalt:
  8. *
  9. * Bemerkungen:
  10. *    Include-Datei zur Installierung von Debug-Routinen in RSys.
  11. *    Das Define MYDEBUG ist zu entkommentieren, falls ein Debugging
  12. *    stattfinden soll.
  13. *
  14. * Erstellungsdatum:
  15. *    07-Jul-93    Rolf Böhme
  16. *
  17. * Änderungen:
  18. *    07-Jul-93    Rolf Böhme    Erstellung
  19. *
  20. ***************************************************************************
  21. */
  22.  
  23. /*
  24.  * Set MYDEBUG to 1 to turn on debugging, 0 to turn off debugging
  25.  */
  26. #ifndef MYDEBUG_H
  27. #define MYDEBUG_H
  28.  
  29. /*#define MYDEBUG    1*/
  30.  
  31. #if MYDEBUG
  32. /*
  33.  * MYDEBUG User Options
  34.  */
  35.  
  36. /* Set to 1 to turn second level D2(bug()) statements */
  37. #define DEBUGLEVEL2  0
  38.  
  39. /* Set to a non-zero # of ticks if a delay is wanted after each debug message */
  40. #define DEBUGDELAY        20
  41.  
  42. /* Always non-zero for the DDx macros */
  43. #define DDEBUGDELAY        50
  44.  
  45. /* Set to 1 for serial debugging (link with debug.lib) */
  46. #define KDEBUG    1
  47.  
  48. /* Set to 1 for parallel debugging (link with ddebug.lib) */
  49. #define DDEBUG        0
  50.  
  51. #endif /* MYDEBUG */
  52.  
  53. /*
  54.  * D(bug()), D2(bug()), DQ((bug()) only generate code if MYDEBUG is non-zero
  55.  *
  56.  * Use D(bug()) for general debugging, D2(bug()) for extra debugging that
  57.  * you usually won't need to see, DD(bug()) for debugging statements that
  58.  * you always want followed by a delay, and DQ(bug()) for debugging that
  59.  * you'll NEVER want a delay after (ie. debugging inside a Forbid, Disable,
  60.  * Task, or Interrupt)
  61.  *
  62.  * Some example uses (all are used the same):
  63.  * D(bug("about to do xyz. variable = $%lx\n",myvariable));
  64.  * D2(bug("v1=$%lx v2=$%lx v3=$%lx\n",v1,v2,v3));
  65.  * DQ(bug("in subtask: variable = $%lx\n",myvariable));
  66.  * DD(bug("About to do xxx\n"));
  67.  *
  68.  * Set MYDEBUG above to 1 when debugging is desired and recompile the modules
  69.  *  you wish to debug.  Set to 0 and recompile to turn off debugging.
  70.  *
  71.  * User options set above:
  72.  * Set DEBUGDELAY to a non-zero # of ticks (ex. 50) when a delay is desired.
  73.  * Set DEBUGLEVEL2 nonzero to turn on second level (D2) debugging statements
  74.  * Set KDEBUG to 1 and link with debug.lib for serial debugging.
  75.  * Set DDEBUG to 1 and link with ddebug.lib for parallel debugging.
  76.  */
  77.  
  78.  
  79. /*
  80.  * Debugging function automaticaly set to printf, kprintf, or dprintf
  81.  */
  82.  
  83. #if KDEBUG
  84. #define bug kprintf
  85. #elif DDEBUG
  86. #define bug dprintf
  87. #else    /* else changes all bug's to printf's */
  88. #define bug printf
  89. #endif
  90.  
  91. /*
  92.  * Debugging macros
  93.  */
  94.  
  95. /* D(bug(     delays DEBUGDELAY if DEBUGDELAY is > 0
  96.  * DD(bug(    always delays DDEBUGDELAY
  97.  * DQ(bug(      (debug quick) never uses Delay.  Use in forbids,disables,ints
  98.  * The similar macros with "2" in their names are second level debugging
  99.  */
  100. #if MYDEBUG    /* Turn on first level debugging */
  101. #define D(x)  (x); if(DEBUGDELAY>0) Delay(DEBUGDELAY)
  102. #define DD(x) (x); Delay(DDEBUGDELAY)
  103. #define DQ(x) (x)
  104. #if DEBUGLEVEL2 /* Turn on second level debugging */
  105. #define D2(x)  (x); if(DEBUGDELAY>0) Delay(DEBUGDELAY)
  106. #define DD2(x) (x); Delay(DDEBUGDELAY)
  107. #define DQ2(x) (x)
  108. #else  /* Second level debugging turned off */
  109. #define D2(x) ;
  110. #define DD2(x) ;
  111. #define DQ2(x) ;
  112. #endif /* DEBUGLEVEL2 */
  113. #else  /* First level debugging turned off */
  114. #define D(x) ;
  115. #define DQ(x) ;
  116. #define D2(x) ;
  117. #define DD(x) ;
  118. #endif
  119.  
  120. #define DPOS D(kprintf("File %20s at line %3ld in %s()\n",__FILE__,__LINE__,__FUNC__))
  121.  
  122. #endif /* MYDEBUG_H */
  123.  
  124.