DEBUG talk
113EVN
law at cis.udel.edu
Fri May 4 08:36:45 AEST 1990
I've been sitting here watching everyone talk about how to get
debugging output into programs cleanly. All fine and nice, but
I dont think anyone hit one of the real nice features of C+Unix+adb.
in code i work on i usually have something like this:
#if DEBUG
int vmdebug =0
#define VMALLOCDEBUG 0x1
#define VMSTUPIDDEBUG 0x2
... for the rest of the bit fields as necessary
#endif
..... insert your code here.....
#if DEBUG
if (vmdebug & VMALLOCDEBUG)
printf("stupid message about vmalloc
#endif
.....
#if DEBUG
if (vmdebug & VMSTUPIDDEBUG)
printf("stupid message about vmstupid
#endif
this way you compile with -DDEBUG but you dont have to actually turn the
debugging on. (quite helpful when debugging kernel events are happen real
real often and debugging is a dog!). when you actually want to monitor
something you adb your running executable (like vmunix!) patch the
debug variable for whatever debugging mask you like... when you're done
reset it to zero for normal operation.
I use such code usually in kernel modules, it is clean and efficient as
debugging comes and allows a great run-time flexibility on what portions
of code is monitored. I've even used such code in conjunction with
university of utah's flog to monitor large portions of the 4.3 scheduling
and virtual memory facilities in real time.
Jeff Law
University of Delaware PHONE: (302)-451-8005 work, (302) 731-1462 home
E-Mail: law at ee.udel.edu, UUCP: ...!<your_favorite_arpa_gateway>!udel.edu!law
Jeff Law
University of Delaware PHONE: (302)-451-8005 work, (302) 731-1462 home
E-Mail: law at ee.udel.edu, UUCP: ...!<your_favorite_arpa_gateway>!udel.edu!law
More information about the Comp.lang.c
mailing list