This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: GDB now takes 4 minutes to start up with remote gdbserver target
- From: Sandra Loosemore <sandra at codesourcery dot com>
- To: Gary Benson <gbenson at redhat dot com>
- Cc: "gdb at sourceware dot org" <gdb at sourceware dot org>
- Date: Fri, 24 Jul 2015 07:57:32 -0600
- Subject: Re: GDB now takes 4 minutes to start up with remote gdbserver target
- Authentication-results: sourceware.org; auth=none
- References: <55B1768E dot 9090309 at codesourcery dot com> <55B1A4FC dot 9010403 at codesourcery dot com> <20150724085244 dot GB22673 at blade dot nx>
On 07/24/2015 02:52 AM, Gary Benson wrote:
A large part of the motivation for these patches was to automate as
much as possible so users did not have to tell GDB stuff it could
figure out itself. Rather than reverting (the nuclear option!)
how about we see if we can make GDB handle this.
How were you debugging before these series went in? Without symbols?
If you'd started GDB with "file" and "set sysroot" commands to set up
your environment the whole remote-fetch should not have happened.
I am passing the executable to GDB on the command line. The executable
is linked with explicit -Wl,-dynamic-linker= and -Wl,-rpath options
pointing to a sysroot that is NFS-mounted on the remote target at the
same pathname as on the host system. (This is our normal automated test
configuration here, BTW.... I was trying to investigate why mainline
GDB testing now takes 12 hours versus 38 minutes for our last stable
release, and quickly realized that GDB's current behavior is going to be
totally unacceptable for interactive use as well.)
The user documentation we at Mentor distribute with our toolchains that
explains sysroots says that you only need to do "set sysroot" in the
debugger if you are interested in debugging shared libraries or
multi-threaded applications, *and* the remote sysroot pathname is not
valid on the host system. Neither of these things applies to what I was
trying to do. Plus, generally speaking, if you fail to do "set sysroot"
in older GDB versions, application debugging still works even if there
is a mismatch in the sysroot pathnames between host and target.... you
just get some messages now and then about how GDB couldn't find some
shared library symbols, and suggesting that you try "set sysroot".
What I find particularly confusing is that continuing to main doesn't
seem like a user action that requires information from the sysroot at
all. I have not set any breakpoints in shared libraries, I'm not trying
to backtrace through a library call, and I haven't requested that GDB
stop on solib events. Why does GDB need to transfer these files from
the target at all if the user is not interested in them?
I'll look into some combination of making the remote transfer
interruptable, and issuing a warning during slow transfers, to
see if something like that could work. Could you update the
manual to add the information that you would have like to have
found there?
I'd rather that we fix GDB to "just work", as it used to do, rather than
have to document workarounds for this breakage.
-Sandra