| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • Get control of your email attachments. Connect all your Gmail accounts and in less than 2 minutes, Dokkio will automatically organize your file attachments. You can also connect Dokkio to Drive, Dropbox, and Slack. Sign up for free.

View
 

DebugMessages

This version was saved 12 years, 2 months ago View current version     Page history
Saved by Kenneth Finnegan
on May 5, 2008 at 3:25:15 pm
 

I use this trick a lot to see how many times a function is called or what section of code a segmentation fault came from.  The useful part about this trick is that once all the messages are in the code, them being compiled into the program is optional.

 

Code:

#ifdef DEBUG

#define ErR(a) fprintf(stderr, "%s\n", a)

#else

#define ErR(a) NULL

#endif

 

Usage:

// hello.c

main() {

     ErR("Beginning of main");

     printf("Hello World!\n");

     ErR("End of main");

}

 

Compile with:

cc -o hello hello.c -DDEBUG

The -D flag defines the symbol after it, so ErR gets replaced with fprintf only if DEBUG is defined, otherwise it disappears.

 


Extensions:

If the debug messages are going by too fast, you can add in a second clause for DEBUG_SLOW being defined to pause 1 seconds after each message

#if defined DEBUG

#define ErR(a) fprintf(stderr, "%s\n", a)

#elif defined DEBUG_SLOW

#define ErR(a) fprintf(stderr, "%s\n", a); sleep(1)

#else

#define ErR(a) NULL

#endif

 

If you want something more general than just printing messages, you can instead do:

#ifdef DEBUG

#define IF_DEBUG(a) (a)

#else

#define IF_DEBUG(a) NULL

#endif

 


Sources:

http://kennethfinnegan.blogspot.com/2008/03/debugging-messages-in-c.html

http://www.gnu.org/software/wget/

Comments (0)

You don't have permission to comment on this page.