From: Pedro Alves <palves@redhat.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: sergiodj@redhat.com, gdb-patches@sourceware.org
Subject: Re: [PATCH v3 4/5] Implement "set cwd" command on GDB
Date: Wed, 27 Sep 2017 14:02:00 -0000 [thread overview]
Message-ID: <93153718-e47d-754b-08b6-60f37cf2ba39@redhat.com> (raw)
In-Reply-To: <83r2uyarha.fsf@gnu.org>
On 09/23/2017 06:55 AM, Eli Zaretskii wrote:
>> Cc: gdb-patches@sourceware.org
>> From: Pedro Alves <palves@redhat.com>
>> Date: Fri, 22 Sep 2017 21:37:49 +0100
>>
>> That would mean keep both non-expanded, and expanded paths around,
>> which is what I was suggesting with:
>>
>> (gdb) set cwd ~foo/bar
>> (gdb) show cwd
>> The current directory is ~foo/bar (/home/foo/bar)
>> ^^^^^^^^^^^^^
>
> Keeping both is also OK, although I don't see how it would solve the
> problems Pedro mentioned earlier, and also now:
>
>> But that's not what I understood Eli suggesting. I understood
>> it as gdb expanding whatever's the value set on connection.
>> But I don't see how that could work, because before gdb connects
>> to a remote target explicitly, it's as if gdb was connected to
>> the native target (that's how "run" works without typing
>> "target native" explicitly, though you can type that), so
>> by the time you connect to the remote target, it's already
>> too late, gdb has already expanded on the host, and there's
>> nothing left to expand.
>
> I don't understand this description, which is not surprising, since my
> knowledge of the machinery involved in this is very superficial.
>
Let's say that GDB keeps track of the desired cwd for the inferior
as a single string, like Sergio's patch is doing. Say the user does:
$ gdb
(gdb) file program
(gdb) set cwd ~
At this point, GDB it not "connected" to any target yet. However,
if the user types "run", GDB automatically uses the native
target to run the inferior. So typing "run" after the above is
equivalent to:
$ gdb
(gdb) file program
(gdb) set cwd ~
(gdb) target native
(gdb) run
OK, now the question is, when to expand that '~'. If it is
expanded immediately at "set cwd" time, then we end up expanding
it incorrectly in case the user actually wanted to debug remotely:
$ gdb
(gdb) file program
(gdb) set cwd ~
(gdb) show cwd
/home/pedro # local path, doesn't exists on the 'foo' machine.
(gdb) target extended-remote foo:12345
(gdb) show cwd
/home/pedro # does not exist on 'foo'
If is it instead expanded only when GDB connects to a target, then
we get this:
$ gdb
(gdb) file program
(gdb) set cwd ~
(gdb) show cwd
~ # not expanded yet!
(gdb) start # gdb expands ~ -> /home/pedro, then starts the inferior
(gdb) show cwd
/home/pedro # now it's expanded. users scratches head.
(gdb) kill
(gdb) target extended-remote foo:12345 # switch same inferior
# to different target
(gdb) show cwd
/home/pedro # whoops, lost original '~' path, and this path
# doesn't make sense for the 'foo' machine.
If GDB does not expand the set cwd path ever except internally
when starting the inferior, then the problems shown just above
never happen.
> Keeping both is also OK, although I don't see how it would solve the
> problems Pedro mentioned earlier, and also now:
The problems I mentioned are solved by not expanding in the
first place. Saving both original-path-as-specified-by-user and
expanded-path (or expanding on demand when displaying the path to the
user and saving it nowhere) would then be a way to let the user
know what the path expands to on the current target, without losing the
originally set path. Like:
$ gdb
(gdb) file program
(gdb) set cwd ~
(gdb) show cwd
cwd is: ~
expands to /home/pedro on current target
(gdb) start
(gdb) show cwd
cwd is: ~
expands to /home/pedro on current target
(gdb) kill
(gdb) target extended-remote foo:12345
(gdb) show cwd
cwd is: ~
expands to /mnt/home/palves on current target
(gdb) disconnect
(gdb) target extended-remote bar:12345
(gdb) show cwd
cwd is: ~
expands to /nfs/homes/pedro on current target
I'm not sure it's worth the trouble to show the
expansions like this. But if we make GDB _not_ expand
the "set cwd" setting's value itself, as I was proposing,
then we can always come back and improve GDB's output like
above, to inform the user what the setting expands to,
as extra info.
Hope that is clearer.
Thanks,
Pedro Alves
next prev parent reply other threads:[~2017-09-27 14:02 UTC|newest]
Thread overview: 131+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-12 4:23 [PATCH 0/4] New "set cwd" command Sergio Durigan Junior
2017-09-12 4:23 ` [PATCH 3/4] Introduce gdb_chdir Sergio Durigan Junior
2017-09-12 14:53 ` Eli Zaretskii
2017-09-13 23:00 ` Sergio Durigan Junior
2017-09-13 16:07 ` Pedro Alves
2017-09-14 15:14 ` Sergio Durigan Junior
2017-09-14 15:23 ` Pedro Alves
2017-09-14 15:33 ` Sergio Durigan Junior
2017-09-12 4:23 ` [PATCH 1/4] Make gdb_dirbuf local to functions Sergio Durigan Junior
2017-09-13 15:12 ` Pedro Alves
2017-09-13 22:03 ` Sergio Durigan Junior
2017-09-13 22:19 ` Pedro Alves
2017-09-13 22:46 ` Sergio Durigan Junior
2017-09-13 23:47 ` Pedro Alves
2017-09-12 4:23 ` [PATCH 4/4] Implement "set cwd" command Sergio Durigan Junior
2017-09-12 14:50 ` Eli Zaretskii
2017-09-12 4:23 ` [PATCH 2/4] Import "glob" module from gnulib Sergio Durigan Junior
2017-09-12 14:55 ` [PATCH 0/4] New "set cwd" command Eli Zaretskii
2017-09-12 16:48 ` Sergio Durigan Junior
2017-09-12 16:57 ` Eli Zaretskii
2017-09-12 17:51 ` Sergio Durigan Junior
2017-09-13 15:00 ` Pedro Alves
2017-09-13 15:06 ` Eli Zaretskii
2017-09-13 21:56 ` Sergio Durigan Junior
2017-09-13 14:54 ` Pedro Alves
2017-09-13 21:54 ` Sergio Durigan Junior
2017-09-19 4:28 ` [PATCH v2 0/5] " Sergio Durigan Junior
2017-09-19 4:28 ` [PATCH v2 3/5] Introduce gdb_chdir Sergio Durigan Junior
2017-09-20 13:14 ` Pedro Alves
2017-09-20 17:25 ` Sergio Durigan Junior
2017-09-19 4:28 ` [PATCH v2 2/5] Get rid of "gdb_dirbuf" and use "getcwd (NULL, 0)" Sergio Durigan Junior
2017-09-20 12:24 ` Pedro Alves
2017-09-20 17:02 ` Sergio Durigan Junior
2017-09-19 4:28 ` [PATCH v2 4/5] Implement "set cwd" command Sergio Durigan Junior
2017-09-20 14:01 ` Pedro Alves
2017-09-20 23:08 ` Sergio Durigan Junior
2017-09-19 4:33 ` [PATCH v2 5/5] Extend "set cwd" to work on gdbserver Sergio Durigan Junior
2017-09-20 14:34 ` Pedro Alves
2017-09-20 23:49 ` Sergio Durigan Junior
2017-09-21 1:37 ` Sergio Durigan Junior
2017-09-22 10:47 ` Pedro Alves
2017-09-22 18:33 ` Sergio Durigan Junior
2017-09-27 13:28 ` Pedro Alves
2017-09-19 4:37 ` [PATCH v2 1/5] Import "glob" and "getcwd" modules from gnulib Sergio Durigan Junior
2017-09-20 12:17 ` Pedro Alves
2017-09-20 17:17 ` Sergio Durigan Junior
2017-09-20 17:33 ` Pedro Alves
2017-09-20 18:31 ` Sergio Durigan Junior
2017-09-20 20:30 ` Sergio Durigan Junior
2017-09-20 22:44 ` Pedro Alves
2017-09-20 23:12 ` Sergio Durigan Junior
2017-09-20 23:25 ` Pedro Alves
2017-09-21 22:59 ` New "set cwd" command Sergio Durigan Junior
2017-09-21 22:59 ` [PATCH v3 4/5] Implement "set cwd" command on GDB Sergio Durigan Junior
2017-09-22 8:03 ` Eli Zaretskii
2017-09-22 12:31 ` Pedro Alves
2017-09-22 18:15 ` Sergio Durigan Junior
2017-09-22 18:00 ` Sergio Durigan Junior
2017-09-22 18:56 ` Eli Zaretskii
2017-09-22 19:24 ` Pedro Alves
2017-09-22 19:41 ` Eli Zaretskii
2017-09-22 20:27 ` Sergio Durigan Junior
2017-09-22 20:37 ` Pedro Alves
2017-09-23 5:55 ` Eli Zaretskii
2017-09-27 14:02 ` Pedro Alves [this message]
2017-09-29 15:31 ` Eli Zaretskii
2017-09-29 15:46 ` Pedro Alves
2017-09-29 17:51 ` Eli Zaretskii
2017-09-23 5:52 ` Eli Zaretskii
2017-09-22 20:24 ` Sergio Durigan Junior
2017-09-23 5:51 ` Eli Zaretskii
2017-09-22 20:55 ` Sergio Durigan Junior
2017-09-23 6:05 ` Eli Zaretskii
2017-09-23 17:01 ` Sergio Durigan Junior
2017-09-21 22:59 ` [PATCH v3 1/5] Import "glob" and "getcwd" modules from gnulib Sergio Durigan Junior
2017-09-22 11:01 ` Pedro Alves
2017-09-22 17:29 ` Sergio Durigan Junior
2017-09-21 22:59 ` [PATCH v3 2/5] Get rid of "gdb_dirbuf" and use "getcwd (NULL, 0)" Sergio Durigan Junior
2017-09-22 11:19 ` Pedro Alves
2017-09-22 17:30 ` Sergio Durigan Junior
2017-09-21 22:59 ` [PATCH v3 3/5] Introduce gdb_tilde_expand Sergio Durigan Junior
2017-09-22 11:57 ` Pedro Alves
2017-09-22 17:37 ` Sergio Durigan Junior
2017-09-22 17:41 ` Pedro Alves
2017-09-22 18:07 ` Sergio Durigan Junior
2017-09-22 18:20 ` Pedro Alves
2017-09-22 18:22 ` Sergio Durigan Junior
2017-09-21 23:06 ` [PATCH v3 5/5] Extend "set cwd" to work on gdbserver Sergio Durigan Junior
2017-09-22 8:12 ` Eli Zaretskii
2017-09-22 18:46 ` Sergio Durigan Junior
2017-09-22 19:09 ` Eli Zaretskii
2017-09-22 20:47 ` Sergio Durigan Junior
2017-09-23 6:00 ` Eli Zaretskii
2017-09-27 14:42 ` Pedro Alves
2017-09-27 21:48 ` Sergio Durigan Junior
2017-09-29 14:03 ` Pedro Alves
2017-09-29 18:33 ` Sergio Durigan Junior
2017-09-28 4:10 ` [PATCH v4 0/3] New "set cwd" command Sergio Durigan Junior
2017-09-28 4:10 ` [PATCH v4 1/3] Introduce gdb_tilde_expand Sergio Durigan Junior
2017-09-29 14:08 ` Pedro Alves
2017-09-29 17:48 ` Sergio Durigan Junior
2017-09-28 4:11 ` [PATCH v4 2/3] Implement "set cwd" command on GDB Sergio Durigan Junior
2017-09-29 15:20 ` Pedro Alves
2017-09-29 18:31 ` Sergio Durigan Junior
2017-09-28 4:11 ` [PATCH v4 3/3] Extend "set cwd" to work on gdbserver Sergio Durigan Junior
2017-09-29 15:21 ` Pedro Alves
2017-09-29 18:48 ` Sergio Durigan Junior
2017-10-03 15:13 ` Pedro Alves
2017-09-29 22:58 ` [PATCH v5 0/3] New "set cwd" command Sergio Durigan Junior
2017-09-29 22:59 ` [PATCH v5 1/3] Introduce gdb_tilde_expand Sergio Durigan Junior
2017-10-03 15:15 ` Pedro Alves
2017-10-04 6:09 ` Sergio Durigan Junior
2017-09-29 22:59 ` [PATCH v5 3/3] Extend "set cwd" to work on gdbserver Sergio Durigan Junior
2017-10-03 15:15 ` Pedro Alves
2017-10-03 16:45 ` Sergio Durigan Junior
2017-10-04 6:09 ` Sergio Durigan Junior
2017-09-29 22:59 ` [PATCH v5 2/3] Implement "set cwd" command on GDB Sergio Durigan Junior
2017-10-03 15:15 ` Pedro Alves
2017-10-03 16:39 ` Sergio Durigan Junior
2017-10-03 16:44 ` Pedro Alves
2017-10-03 16:47 ` Sergio Durigan Junior
2017-10-03 16:58 ` Sergio Durigan Junior
2017-10-03 20:09 ` Sergio Durigan Junior
2017-10-03 21:29 ` Pedro Alves
2017-10-04 5:40 ` Eli Zaretskii
2017-10-04 6:10 ` Sergio Durigan Junior
2017-10-06 2:37 ` asmwarrior
2017-10-06 10:54 ` [pushed] Fix GDB build under msys+mingw gcc 32bit (Re: [PATCH v5 2/3] Implement "set cwd" command on GDB) Pedro Alves
2017-10-06 11:06 ` [pushed] Fix more GDB build breakage on mingw32 " Pedro Alves
2017-10-06 11:15 ` asmwarrior
2017-10-09 21:58 ` Sergio Durigan Junior
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=93153718-e47d-754b-08b6-60f37cf2ba39@redhat.com \
--to=palves@redhat.com \
--cc=eliz@gnu.org \
--cc=gdb-patches@sourceware.org \
--cc=sergiodj@redhat.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