From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1301 invoked by alias); 28 Apr 2003 08:40:25 -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 1287 invoked from network); 28 Apr 2003 08:40:23 -0000 Received: from unknown (HELO mwinf0302.wanadoo.fr) (193.252.22.28) by sources.redhat.com with SMTP; 28 Apr 2003 08:40:23 -0000 Received: from eb.pragmadev (APastourelles-107-1-18-185.abo.wanadoo.fr [81.49.132.185]) by mwinf0302.wanadoo.fr (SMTP Server) with SMTP id C7CE1C0001FA for ; Mon, 28 Apr 2003 10:40:22 +0200 (CEST) Content-Type: text/plain; charset="iso-8859-1" From: Eric Brunel Reply-To: support@pragmadev.com Organization: PragmaDev To: gdb@sources.redhat.com Subject: Re: Variable read time * 3+ between program compiled w/ gcc 2.95 and w/ gcc 3.2 on Solaris Date: Mon, 28 Apr 2003 08:40:00 -0000 References: <03042416451601.01259@eb.pragmadev> <20030424145200.GB14226@nevyn.them.org> In-Reply-To: <20030424145200.GB14226@nevyn.them.org> MIME-Version: 1.0 Message-Id: <03042810464300.01260@eb.pragmadev> Content-Transfer-Encoding: 8bit X-SW-Source: 2003-04/txt/msg00317.txt.bz2 On Thursday 24 April 2003 16:52, Daniel Jacobowitz wrote: > On Thu, Apr 24, 2003 at 04:45:16PM +0200, Eric Brunel wrote: > > Hi all, > > > > I don't know if the following problem belongs here or in the gcc > > newsgroup: we've noticed a drastic loss of performance when reading > > program variables from gdb between the versions 2.95.3 and 3.2.2 of > > gcc on Solaris 2.7. Here is a short example showing the problem: > > > > --foo.cpp--------------- > > int x; > > > > int main(int argc, char *argv[]) > > { > > x = 12; > > return 0; > > } > > ------------------------ > > > > I then compile this program using g++ 2.95.3 and 3.2.2 into the > > binaries foo2 and foo3 resp. Then I run: > > > > gdb -batch -x gdb.cmds fooN > > > > with the following commands file: > > > > --gdb.cmds-------------- > > break foo.cpp:6 > > run > > print x > > print x > > ... (200 times) > > print x > > quit > > ------------------------- > > > > Here are typical results: > > > > $ time gdb -batch -x gdb.cmds foo2 > /dev/null > > > > real 0m0.564s > > user 0m0.150s > > sys 0m0.110s > > > > $ time gdb -batch -x gdb.cmds foo3 > /dev/null > > > > real 0m1.726s > > user 0m1.340s > > sys 0m0.260s > > > > The reading time has been increased by a factor 3+. This is even worse > > if the variable is a structure and if I access fields in it. With a > > chained list read via x->next->next->next..., we got times around > > .5/.75 seconds with g++ 2.95, and more than 30 seconds (!) with g++ > > 3.2 > > > > We tested versions 5.2 and 5.3 of gdb and got similar results. > > > > Is this a bug? Is it known? Is there a workaround or a patch? Thanks a > > lot in advance. > > Probably a bug; not known. I don't know why this would happen, > especially for such a simple program; if you can get an ida of where > gdb is spending its time that would be interesting. A decent profiling > tool should be able to do the job. Just to let everybody know: after profiling and with Daniel's help, I discovered that what slowed down gdb was simply the libraries libstdc++ and libgcc_s that are apparently compiled with debug info in the gcc 3.2.2 distro I downloaded from www.sunfreeware.com; just stripping these two libraries brought back the performance I got with gcc 2.95. I'll send a mail to the guy taking care of sunfreeware.com to warn him about this issue and to know if he can just build with the right options to avoid this problem. Thanks! -- - Eric Brunel - PragmaDev : Real Time Software Development Tools - http://www.pragmadev.com