lotridge@charlie.ccd.bnl.gov (Charlie Lotridge) (05/20/91)
This is ridiculous. I've posted to gnu.g++ about this problem and have gotten minimal response (although my appreciation goes to those that did). This is the deal. I'm on a sparc running sunos 4.1.1. I've obtained and built gcc-1.39, g++-1.39.1, and gdb-3.5 (plus several other ancillary things that make these things work). This all went smoothly. According to the g++ README, gdb 3.5 should operate just fine on this version of g++. Yet I'm finding it almost completely unusable for two reasons. First, the names are all screwed up: instead of String::String I get something like __6StringPCc. Second, I can't seem to access any of the data members of a class from within one of its member functions. To exemplify, let me steal from my original post, where I set up a simple String class: **** String.h **** class String { private: char *string; int size; public: String(const char *); ... }; **** String.cc **** String::String(const char *str){ =>size = strlen(str) + 1; string = new char[size]; strcpy(string, str); } Now, when I step into the constructor to the indicated point (the => symbol), I get this: Reading in symbols for String.cc...done. __6StringPCc ($t=(String *) 0xf7fffe50, str=(char *) 0x22b5 "AAAAA") (String.cc line 14) (gdb) info args $t = (String *) 0xf7fffe50 str = (char *) 0x22b5 "AAAAA" (gdb) info locals str = (char *) 0x22b5 "AAAAA" (gdb) p $t $1 = void (gdb) p $this $2 = void (gdb) p this No symbol "this" in current context. (gdb) p size No symbol "size" in current context. (gdb) p string No symbol "string" in current context. I can't seem to access the 'this' pointer, member 'size', or member 'string'. I *must* have done, or be doing something wrong. I mean, I could live with the mangled names, but not being able to see data members makes the debugger USELESS on c++ code. I compile everything with the '-g' option as the literature suggests I should, so it's not as if the symbol tables are lacking. Some of the folks who responded to my original post mentioned a gdb version 3.6 (sometimes 3.6- ) as being the solution, but I haven't been able to find such an animal anywhere. And anyway, to restate, the g++ README *does* say that gdb 3.5 should work. I should make it clear - I'm real new to all this stuff, to the point that I only became aware of this newsgroup a few weeks ago. So it wouldn't surprise me at all to find I've missed something really obvious. Somebody please help. C -- Charlie Lotridge Brookhaven National Laboratory Upton, NY 11793