Unix SVR2 on Vax: bug in cpp causes confused sdb
R. Curtis Jackson
rcj at burl.UUCP
Thu May 2 01:26:52 AEST 1985
I was debugging a program with sdb and was totally bewildered until
I noticed that, on a breakpoint before C instruction N, sdb was actually
executing instruction N and breakpointing before N-1 even though it
told me it was breakpointing before instruction N. This can really
warp your mind when debugging tight code. I called the Unix Hotline
and received a VERY fast and accurate reply (my thanks to Alan Berkman
at the Hotline). Here it is:
cpp(1) has a bug in it which causes it to output bogus line numbers and
therefore confuses sdb about what is where in the source. If you define
a multiline macro like this:
# define KILLIT\
{\
register int c;\
\
while(((c=input()) != NL) && (c != 0))\
{\
/* do nothing!! */\
}\
unput(NL);\
}
all hell breaks loose (i.e., the bug appears). If you put a space
after KILLIT and before the backslash in the first line, however:
# define KILLIT \
then things work fine.
Please no flames on my coding style, I'll ignore them anyway,
--
The MAD Programmer -- 919-228-3313 (Cornet 291)
alias: Curtis Jackson ...![ ihnp4 ulysses cbosgd mgnetp ]!burl!rcj
...![ ihnp4 cbosgd akgua masscomp ]!clyde!rcj
More information about the Comp.lang.c
mailing list