I've recently moved onto a C++ project with a large number of directories
(several hundred) containing an even larger number of C++ source files.
There are vastly more ways in C++ to obfuscate a program than there are
in C, and it seems somebody laid a bet on the original development team
to prove that this is the case. ;-( Unfortunately, I have no contact
with the original programmers, who live and work on a different
continent.
In the course of tracking down a bug, I need a browser which can tell me
all the places in the code where `ClimbMountain', as in:
Arizona::ClimbMountain (*crevasse lookout) ;
gets called. That is, I want the browser to identify lines of code like
*state.phoenix[i]->ClimbMountain (Hoi) ;
, because `phoenix' here is an array of Arizona pointers. However, I
want this browser to _avoid_ telling me about lines like
*state.StPaul[i].ClimbMountain (Hi) ;
, because the StPaul in that line is an array of Minnesotas, not an array
of Arizonas. Needless to say, there is no chain of inheritance between
the classes Minnesota and Arizona - at least, none that I'm aware of, but
since there is a great deal of multiple inheritance used within the
program, I could be wrong.
I tried downloading SourceNav from SourceForge yesterday. The
documentation's list of SourceNav's capabilities is somewhat on the vague
side, so I therefore tried the program out - unless I'm mistaken, this
browser can only tell me that `ClimbMountain' is "used" in the definition
of the class `Arizona', not the places where instances of Arizona invoke
`ClimbMountain'.
Does there exist a C++ browser (preferably free or open-source running
on MS-Windows or on Unices), powerful enough to give me the info I need?
If so, please tell me its name and its URL.
Thanks in advance for the help!
--
Alan Mackenzie (Munich, Germany)
Email: aa**@muuc.dee; to decode, wherever there is a repeated letter
(like "aa"), remove half of them (leaving, say, "a").