From: Joel Brobecker <brobecker@adacore.com>
To: Tom Tromey <tromey@redhat.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [RFA/python:2/2] First script in GDB python library - command/pahole.py
Date: Thu, 03 Jun 2010 00:11:00 -0000 [thread overview]
Message-ID: <20100603001115.GJ3019@adacore.com> (raw)
In-Reply-To: <m3aarlf5n7.fsf@fleche.redhat.com>
> There is no sensible way for a user to activate such a command. With
> this patch a user would have to know the name of the command's file and
> invoke "python import gdb.command.pahole".
[...]
> One idea would be to allow some kind of auto-loading when a command is
> not found. That is, load pahole.py the first time the "pahole" command
> is used. Or even better, scan the install tree first so that command
> completion still works. (This is not ideal, though, since there is not
> actually a way to discover command names without loading the file.)
Here is an approach that should work. The idea is to rely on the
convention that the command name is the name of the python script.
Subcommands are stored inside subdirectories. For instance, let's
imagine that we're trying to execute the following command:
(gdb) prefix1 prefix2 pycommand arg1 arg2
What I propose we do is that, if a python script provides an implementation
of command "prefix1 prefix2 pycommand", then it should be stored in
GDB_PYTHON_DIR/command/prefix1/prefix2/pycommand.py
(Doug asked whether we wanted the .py extension or not; either of us
don't seem to have a strong opinion on it, although I do like it, and
most editors will likely also appreciate having it to automatically
activate the python edit mode).
pycommand.py is a python *script* (it is not expected to be a module file)
which will be executed when the "prefix1 prefix2 pycommand" command is
actually used.
I am not sure that we should search for Python commands only after
we failed to find a command. I'm thinking of the various prefix
commands that we already have such as the set command. The current
semantics of the "set" command is that it treats the arguments as
an expression if no subcommand was found. So if we looked at python
commands only after we failed to find a regular command, then it would
not allow us to add a set subcommand, at least not automatically.
That's why I suggest we scan the GDB_PYTHON_DIR/command directory
for all scripts, and create stub commands - the commands exist, but
their implementation is only loaded on-demand. The loading would
be performed using the execfile command (or its C equivalent if there
is one).
WDYT? (note that having the stub command should also allow us to
have command completion)
--
Joel
next prev parent reply other threads:[~2010-06-03 0:11 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-27 0:09 Add support for the GDB Python Library Joel Brobecker
2010-05-27 0:09 ` [RFA/python:2/2] First script in GDB python library - command/pahole.py Joel Brobecker
2010-05-27 20:37 ` Tom Tromey
2010-05-28 1:34 ` Joel Brobecker
2010-06-03 0:11 ` Joel Brobecker [this message]
2010-06-03 6:28 ` Doug Evans
2010-06-03 15:35 ` Joel Brobecker
2010-07-11 18:49 ` Tom Tromey
2010-05-27 0:25 ` [RFA/python:1/2] Add support for --with-pythondir Joel Brobecker
2010-05-27 6:49 ` Doug Evans
2010-05-27 20:32 ` Tom Tromey
2010-05-28 9:55 ` Doug Evans
2010-05-28 17:20 ` Joel Brobecker
2010-05-30 17:10 ` Doug Evans
2010-06-01 20:15 ` Joel Brobecker
2010-06-01 20:39 ` Doug Evans
2010-06-01 20:53 ` Joel Brobecker
2010-05-27 1:54 ` Add support for the GDB Python Library Doug Evans
2010-05-27 3:42 ` Doug Evans
2010-05-27 15:17 ` Joel Brobecker
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=20100603001115.GJ3019@adacore.com \
--to=brobecker@adacore.com \
--cc=gdb-patches@sourceware.org \
--cc=tromey@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