Dbx problem, same name in different files

William Setzer IDM setzer at nssdcs
Wed Jul 12 07:43:37 AEST 1989


Consider the following program:
-------
file foo1.c
-------
static struct foo { char b[4];   int a;    long c;  };

static struct foo name;

main()  {  printf(" "); }
-------
-------
file foo2.c
-------
static struct foo {  long x;  char y[4];  int z; };

static struct foo name;
-------
(I deleted some whitespace to compact this message.)
I compiled this on a Sun4 (SunOS 4.0) ['cc -g foo1.c foo2.c'], and then ran
it thru dbx.  Here is a partial transcript (after stopping at printf):

----------
(dbx) file
foo1.c
(dbx) print name
`foo2`name = {  x = 0; y = "" ; z = 0  }  /* whitespace deleted */
(dbx) file foo1.c
(dbx) print name
`foo2`name = {  x = 0; y = "" ; z = 0  }
(dbx) file foo2.c
(dbx) print name
`foo2`name = {  x = 0; y = "" ; z = 0  }
----------

If I type 'print `foo1`name', I get what I'm looking for, namely --
`foo1`name = {  b = ""; a = 0; c = 0 }.

Since the default file is foo1.c, I would expect 'print name' to print
`foo1`name.  Now to the question -- Is the above phenomenon a dbx bug or
dbx feature?
(Please note: foo1.c and foo2.c are the result of distilling 'real' code
down to the smallest pieces that demonstrate the above phenomenon. I am
not really interested in a solution per se [the offending variables were
eventually just renamed], but I am curious as to the cause of the problem.
If it's not a bug, I would like to know why not.)

Thanx for any comments.
--
William Setzer
setzer at nssdcs.gsfc.nasa.gov



More information about the Comp.unix.questions mailing list