Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Gary Benson <gbenson@redhat.com>
To: Mark Kettenis <mark.kettenis@xs4all.nl>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH 0/2] Use gdb_sysroot for main executable on attach
Date: Thu, 05 Mar 2015 13:39:00 -0000	[thread overview]
Message-ID: <20150305133921.GB23865@blade.nx> (raw)
In-Reply-To: <201503051248.t25CmnZH014990@glazunov.sibelius.xs4all.nl>

Mark Kettenis wrote:
> > From: Gary Benson <gbenson@redhat.com>
> > 
> > This series modifies GDB to prefix the main executable's path with
> > gdb_sysroot under certain circumstances, namely:
> > 
> >  * The path supplied by target_pid_to_exec_file is absolute, and
> >  * gdb_sysroot is set and not remote.
> > 
> > This logic is skipped for remote gdb_sysroots because the subsequent
> > code does not support opening the main executable over the remote
> > protocol.  This is something I intend to rectify with future patches
> > but the ability to use gdb_sysroot like this is useful for attaching
> > to processes running in chroot jails and containerized environments
> > so I am submitting this series independently.
> 
> What problem are you trying to fix?

I'm mostly trying to eliminate the extra work users have to do in
order to attach to remote processes or to attach to local processes
running in containers.

For remote processes you have to do something like:

  set sysroot remote:
  file /path/to/local/copy/of/binary
  target remote WHEREVER

or:
  
  set sysroot /path/to/local/copy
  file /path/to/local/copy/of/binary
  target remote WHEREVER

I would ideally like to get to the situation where the only command
you need is "target remote ...", but a step in that direction is
removing the required "file" command.

For processes running in containers you have to do something like:

  set sysroot /proc/PID/root
  file /proc/PID/exe
  attach PID

Again, I'd like to get to the situation where the only command you
need is "attach PID".  This series removes the need for the "file"
command in this sequence, but you still need the "set sysroot".

For the ultimate solution (removing the need for "set sysroot")
Pedro suggested a new option, "set sysroot target:" that would be
the default and would mean "if the target is remote, pull binaries
over the remote protocol; if the target is local, grab them from
the filesystem."  There's details here:

  https://sourceware.org/gdb/wiki/LocalRemoteFeatureParity

Aside from removing the need for the user to set a sysroot for
these two cases (where GDB has enough information to imply what
the user is asking for) it unblocks multi-inferior debugging
when different inferiors require different sysroots, something
that can't be done right now.  I don't think this is relevant
for remote debugging right now as we only support one gdbserver
connection at a time, but it is relevant for containers where
you might need to debug, eg, a webserver in one container
talking to a database server in another.

I would also like to make it possible to fetch stripped debug
info over the remote protocol if the user desires it, so that's
something else I'm thinking about with this work.

Cheers,
Gary

-- 
http://gbenson.net/


  reply	other threads:[~2015-03-05 13:39 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-05 11:37 Gary Benson
2015-03-05 11:37 ` [PATCH 1/2] Introduce new function exec_file_find Gary Benson
2015-03-05 11:37 ` [PATCH 2/2] Use exec_file_find to locate executable on attach (sometimes) Gary Benson
2015-03-05 12:49 ` [PATCH 0/2] Use gdb_sysroot for main executable on attach Mark Kettenis
2015-03-05 13:39   ` Gary Benson [this message]
2015-03-12 11:44 ` [PING][PATCH " Gary Benson
2015-03-18 15:22 ` [PATCH " 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=20150305133921.GB23865@blade.nx \
    --to=gbenson@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=mark.kettenis@xs4all.nl \
    /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