From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2910 invoked by alias); 30 Jul 2002 03:03:30 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 2901 invoked from network); 30 Jul 2002 03:03:29 -0000 Received: from unknown (HELO crack.them.org) (65.125.64.184) by sources.redhat.com with SMTP; 30 Jul 2002 03:03:29 -0000 Received: from dsl254-114-118.nyc1.dsl.speakeasy.net ([216.254.114.118] helo=nevyn.them.org ident=mail) by crack.them.org with asmtp (Exim 3.12 #1 (Debian)) id 17ZNI5-0005Vh-00; Mon, 29 Jul 2002 22:03:18 -0500 Received: from drow by nevyn.them.org with local (Exim 3.35 #1 (Debian)) id 17ZNI3-0003z3-00; Mon, 29 Jul 2002 23:03:15 -0400 Date: Mon, 29 Jul 2002 20:03:00 -0000 From: Daniel Jacobowitz To: Peter Thompson/Amy Kirschner Cc: gdb@sources.redhat.com Subject: Re: Is c++ debugging really "this" bad? Message-ID: <20020730030315.GA15295@nevyn.them.org> Mail-Followup-To: Peter Thompson/Amy Kirschner , gdb@sources.redhat.com References: <3D46008C.DCD89FAF@rcn.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3D46008C.DCD89FAF@rcn.com> User-Agent: Mutt/1.5.1i X-SW-Source: 2002-07/txt/msg00304.txt.bz2 On Mon, Jul 29, 2002 at 10:57:16PM -0400, Peter Thompson/Amy Kirschner wrote: > I'm doing some contract work helping a small company with their tool > issues and have run across a nasty c++/gdb interaction. I've been > checking the archives and I find some related bugs in the c++ area, but > not the specific issue I'm running into. > > The basic problem. Printing the value of 'this', the c++ object > pointer, does not agree with a simple printf of 'this' in the same > routine. The particular routine I'm looking at is a destructor routine, > and I have seen reasonable values of 'this' in other routines, but the > wrong behavior seems to occur more often. Or maybe just gets reported > to me more often... > > Some details: We're using the 3.0.1 version of gcc and gdb with a mips > 32 instruction set. We do have a version of 3.0.4 available, but have > not done extensive testing with that. Gdb first looks for a local > variable, $this, but doesn't find it in the current scope, or any > containing scope. Then it attempts to find 'this' in the local scope, > and, failing that, looks to the outer scope where it does eventually > find a 'this' variable, which is of course totally unrelated. Our > standard compilation options are (among a variety of others) -g and -O1. > I've tried -g -O0, -g by itself (pretty much the same, eh?), -g3 -O1, > and while -O0 produces a local copy of 'this', it still doesn't find the > right value. The gcc compiler I'm using produces a .mdebug section, > which contains ecoff data, and does not recognize a -gdwarf or -gdwarf-2 > option. > > I keep getting the feeling that maybe I'm just missing something basic, > or the debugger is. Certainly the compiler knows where the real value > is, and I can track it via the machine code for any line that > manipulates 'this', but I don't expect all the users to be able to do > that readily. Does this ring any bells with anyone? I've never specifically seen the debugger lose track of 'this' in destructors, but I haven't tried in a little while. With GCC 3.0.1 (and mdebug to boot) you can't really expect C++ debugging to work. The required changes for stabs debugging of C++ code are only in later releases; I think 3.0.4 was fixed but I'm not sure. Use 3.1.1 if possible. That will require a matching binutils upgrade. You didn't mention what version of GDB you were using, also. -- Daniel Jacobowitz Carnegie Mellon University MontaVista Software Debian GNU/Linux Developer