This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: Debugging a large program
- From: Daniel Jacobowitz <drow at false dot org>
- To: Nick Savoiu <savoiu at ics dot uci dot edu>
- Cc: gdb at sources dot redhat dot com
- Date: Mon, 4 Oct 2004 17:15:14 -0400
- Subject: Re: Debugging a large program
- References: <044c01c4aa56$e5f7fb00$5a02a8c0@rio>
On Mon, Oct 04, 2004 at 02:12:46PM -0700, Nick Savoiu wrote:
> >On Mon, Oct 04, 2004 at 01:44:55PM -0700, Nick Savoiu wrote:
> >> Hi,
> >>
> >> I'm using GDB to debug a rather large program and I'm running into memory
> >> usage problems that slow down debugging considerably. Just invoking GDB
> on
> >> the executable (without issuing 'run') results in GDB using up 450MB of
> >> memory.
> >>
> >> I think that this is caused by GDB reading in all the symbol info.
> However,
> >> the code that I'm debugging uses but a small fraction of the code that's
> >> present in the program. Can I somehow tell GDB to only load the symbols
> it
> >> needs?
> >
> >GDB already reads in only what it needs, and more lazily - however,
> >there's some information about every symbol that's needed. 450MB is
> >pretty remarkable; how big is the application? readelf -S output would
> >be the best way to answer the question.
>
> Here's what readelf -S says:
>
> There are 30 section headers, starting at offset 0x57ec:
>
> [12] .text PROGBITS 0804ad40 002d40 0000f0 00 AX 0
> 0 16
> [23] .stab PROGBITS 00000000 0034e4 0007a4 0c 24
> 0 4
> [24] .stabstr STRTAB 00000000 003c88 001983 00 0
> 0 1
This is an extremely small application. I guess this is the KDE-style
everything-is-in-a-shared-library setup?
> BTW, 405MB was for gdb running to main() not just what I said above :) There
> probably are a few global variables but I don't think they should take up
> too much space.
That requires loading symbol information for all the shared libraries,
which is probably what's taking all the space. 400MB+ is a bit
unusual, but I don't know how big your libraries are.
--
Daniel Jacobowitz