Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Gary Benson <gbenson@redhat.com>
To: Sandra Loosemore <sandra@codesourcery.com>
Cc: "gdb@sourceware.org" <gdb@sourceware.org>
Subject: Re: GDB now takes 4 minutes to start up with remote gdbserver target
Date: Fri, 24 Jul 2015 08:52:00 -0000	[thread overview]
Message-ID: <20150724085244.GB22673@blade.nx> (raw)
In-Reply-To: <55B1A4FC.9010403@codesourcery.com>

Sandra Loosemore wrote:
> (1) I don't see anything in the GDB manual to indicate that
> transferring files from the target back to the host is the default
> behavior for "set sysroot", nor do I see any kind of warning that
> this can be a very slow operation.

The manual says this:

  If @var{path} starts with the sequence @file{target:} and the target
  system is remote then @value{GDBN} will retrieve the target binaries
  from the remote system.

It doesn't mention in the manual that this is the default, though it
is documented in NEWS:

  * Directory names supplied to the "set sysroot" commands may be
    prefixed with "target:" to tell GDB to access shared libraries from
    the target system, be it local or remote.  This replaces the prefix
    "remote:".  The default sysroot has been changed from "" to
    "target:".  "remote:" is automatically converted to "target:" for
    backward compatibility.

  * The system root specified by "set sysroot" will be prepended to the
    filename of the main executable (if reported to GDB as absolute by
    the operating system) when starting processes remotely, and when
    attaching to already-running local or remote processes.

  * GDB now supports automatic location and retrieval of executable
    files from remote targets.  Remote debugging can now be initiated
    using only a "target remote" or "target extended-remote" command
    (no "set sysroot" or "file" commands are required).  See "New remote
    packets" below.

> (2) I don't know how users are supposed to know that "set sysroot"
> is the source of this slowness, either.  There needs to be something
> in the section of the manual that discusses how to connect to a
> remote gdbserver target that tells you what to do if the default
> behavior is unacceptably slow.

Understood.

> (3) Once the "c" command is issued, there's nothing to inform the
> user exactly what GDB is doing or that this can be a very slow
> operation (e.g., with a progress bar).

This is kind of a shortcoming of GDB in general.  There was a similar
issue relating to tab-completion in programs with lots of symbols:

  https://sourceware.org/bugzilla/show_bug.cgi?id=11920

I don't have a good solution for this.

> (4) GDB doesn't respond to ^C during the 4 minutes it is doing
> whatever it's doing to transfer files.  It just sits there acting
> catatonic.

That's not great.

> In absence of any other information, users are likely to come to the
> same conclusion I did -- that GDB and/or GDBserver are broken and
> just got wedged somewhere on startup.  I was knowledgeable enough
> about GDB internals to restart my session and do "set debug remote
> 1" prior to connecting so I could see the RSP traffic and get a clue
> where it was getting stuck; ordinary users would probably just give
> up in disgust, or complain to their toolchain vendor :-P that GDB is
> broken.
> 
> While I appreciate that this change may be useful in fixing a class
> of user problems, it is an incompatible change from past behavior
> and causes a whole different set of problems for users.  Can we
> please consider restoring the default for "set sysroot" to its
> previous behavior?

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'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?

Thanks,
Gary

-- 
http://gbenson.net/


  reply	other threads:[~2015-07-24  8:52 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-23 23:21 Sandra Loosemore
2015-07-24  2:39 ` Sandra Loosemore
2015-07-24  8:52   ` Gary Benson [this message]
2015-07-24 13:59     ` Sandra Loosemore
2015-07-24 14:08       ` Paul_Koning
2015-07-24 15:11         ` Gary Benson
2015-07-24 15:27           ` Paul_Koning
2015-07-24 16:36             ` Pedro Alves
2015-07-24 16:58               ` Paul_Koning
2015-07-26 20:03               ` Frank Ch. Eigler
2015-07-26 20:06                 ` Jan Kratochvil
2015-07-26 20:50                   ` Frank Ch. Eigler
     [not found]               ` <55B27348.1020104@codesourcery.com>
2015-07-27 12:22                 ` Gary Benson
2015-07-28  9:25                   ` Gary Benson
2015-07-28 15:22                     ` Sandra Loosemore
2015-07-29 10:00                       ` Gary Benson
2015-07-28 15:38                     ` Gary Benson
2015-07-28 17:04                     ` Doug Evans
2015-07-28 22:13                 ` Pedro Alves
2015-07-29  1:32                   ` Sandra Loosemore
2015-07-28 16:55     ` Doug Evans
2015-07-28 22:14       ` Pedro Alves
2015-07-29 10:39         ` Gary Benson
2015-07-29 10:15       ` Gary Benson
2015-07-24 10:34   ` Gary Benson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150724085244.GB22673@blade.nx \
    --to=gbenson@redhat.com \
    --cc=gdb@sourceware.org \
    --cc=sandra@codesourcery.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox