Advertisement
avp210159

debug.h debug macro like assert

Apr 21st, 2016
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.94 KB | None | 0 0
  1. #ifndef _DEBUG_H
  2. #define _DEBUG_H
  3. // avp 2016 simple debug for C
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6.  
  7. #ifndef DEBUG_LEVEL
  8. #define DEBUG_LEVEL 1
  9. #endif
  10.  
  11. static int debug_exit_level  = DEBUG_LEVEL;
  12. static FILE *debug_out = 0;
  13. static char *env_level = 0;
  14.  
  15.  
  16. static int
  17. debug_message (int level, const char *expr, const char *msg,
  18.            const char *file, int line, const char *func)
  19. {
  20.   if (!env_level) {
  21.     if ((env_level = getenv("DEBUG_LEVEL")))
  22.       debug_exit_level = atoi(env_level);
  23.     else
  24.       env_level = (char *)"";
  25.   }
  26.   if (!debug_out)
  27.     debug_out = stderr;
  28.  
  29.   int need_exit = level < debug_exit_level;
  30.  
  31.   if (msg || need_exit)
  32.     fprintf(debug_out, "DEBUG: %s line %d (%s) %s [%s]\n",
  33.         file, line, func, expr, msg);
  34.   if (need_exit)
  35.     abort();
  36.  
  37.   return level;
  38. }
  39.  
  40. #define DEBUG(l,e,t) \
  41.   ((e) ? \
  42.    0     \
  43.    : debug_message(l, __STRING(e), t, __FILE__, __LINE__, __FUNCTION__))
  44.  
  45. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement