Re: Redefining built-in commands.

Don Howard
2002-06-05T21:39:43Z

On Fri, 31 May 2002, Eli Zaretskii wrote:

> > Date: Thu, 30 May 2002 17:24:05 -0700 (PDT)
> > From: Don Howard <dhoward@redhat.com>
> >
> > Should gdb allow users to redefine built-in commands?
>
> I think it should, unless we cannot do it safely.
>
> > If so, should the
> > orignial alias continue to behave like the original built-in, or should
> > it's behavior be modified also?
>
> I'm not 100% sure, but I tend to think the aliases that are mere
> abbreviations, like `n' for `next', should be redefined to the new
> command, while aliases which aren't abbreviations should be left to
> point to the original command.
>
> But if the above cannot be done, we should either redefine the aliases
> to the new command, or disable the aliases entirely. Crashing is not
> an option, obviously.
>

Ignoring the alias issue, I don't see any benefit to being able to
redefine built-in commands.

When a built-in command is redefined, it's original functionality is lost
for the remainder of that debugging session. For example, say the user
redefines the 'step' command -- there is no longer a way to do
source-level stepping.

(gdb) define step
> do something special
> step
> end
(gdb)

The above example ends up "doing something special" until gdb hits it's
recursion limit, rather than doing something special and then stepping.
The example *does* work just fine if the user picks anything other than a
built-in name:

(gdb) define special_step
> do something special
> step
> end
(gdb)

I think the ability to redefine built-in commands is a misfeature.

Users can always choose an alternate name for their custom commands.