Xref: utzoo comp.lang.c:28409 comp.unix.wizards:21780 alt.sources:1830 comp.sources.d:5256 misc.misc:9658 Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!apple!escher From: escher@Apple.COM (Michael Crawford) Newsgroups: comp.lang.c,comp.unix.wizards,alt.sources,comp.sources.d,misc.misc Subject: Re: #define DEBUG... (using printf for debugging) Message-ID: <8060@goofy.Apple.COM> Date: 3 May 90 21:55:38 GMT References: <11290@hoptoad.uucp> <40628@cornell.UUCP> <1990May3.192347.12973@cs.umn.edu> Organization: Apple Computer Inc., Cupertino, CA Lines: 73 In article <1990May3.192347.12973@cs.umn.edu> thornley@cs.umn.edu (David H. Thornley) writes: >In article <40628@cornell.UUCP> gordon@cs.cornell.edu (Jeffrey Adam Gordon) writes: >>I want to have a DEBUG flag which controls whether diagnostic printfs >>are executed or not. >> >>The obvious way to do this is: >> >>#ifdef DEBUG >> printf ("debugging information"); >>#endif DEBUG > >How about >#ifdef DEBUG >#define D(X) X >#else >#define D(X) >#endif > >and >D(printf("debugging information\n");) more elegant still: #ifdef DEBUG #define fDebug( x ) fprintf x #define Debug( x ) printf x #else #define fDebug( x ) #define Debug( x ) #endif fDebug(( stderr, "debugging info" )); Debug(( "debugging info" )); be sure to do the defining of DEBUG on the CC command line, with a nifty setup in your makefile: D= CFLAGS = ${D} foo: foo.o cc -o foo foo.o foo.o: foo.c cc -c ${CFLAGS} foo.c Then your command line might be: alias md 'make D=-DDEBUG' touch foo.c md and you will turn on debugging in foo.c. Read Robert Ward's book "Debugging C". It is a gold mine. Mostly oriented toward DOS, but much of what is in it is applicable anywhere. Also, get a source level debugger. You may have sdb or dbx on Unix systems, SADE or ThinkC on Macintosh, or Codeview, and I think Turbo C, on the PC. The Free Software Foundation's GDB is available for Unix for free and is much better than dbx or sdb, IMHO. When you learn to use them effectively, it is a lot better than embedding code in your source -- less recompiling. -- Michael D. Crawford Oddball Enterprises Consulting for Apple Computer Inc. 606 Modesto Avenue escher@apple.com Santa Cruz, CA 95060 Applelink: escher@apple.com@INTERNET# oddball!mike@ucscc.ucsc.edu The opinions expressed here are solely my own. Free Lithuania.