This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix PR gdb/17035: "show user" doesn't list user-defined commands that have empty bodies.


Hi Gabriel,

On 08/23/2014 03:27 AM, Gabriel Krisman Bertazi wrote:
> Pedro Alves <palves@redhat.com> writes:
> 
>>>        c = lookup_cmd (&comname, cmdlist, "", 0, 1);
>>> -      /* c->user_commands would be NULL if it's a python/scheme command.  */
>>> -      if (c->class != class_user || !c->user_commands)
>>> -	error (_("Not a user command."));
>>> +      if (c->class != class_user)
>>> +        error (_("Not a user command."));
>>
>> Doesn't this mean this reverts part of 7d74f2446, and thus now we'd
>> show python/scheme commands?
>>
>> IIUC 7d74f2446, it looks like gdb.python/py-cmd.exp is missing
>> a test that makes sure "show user" doesn't list the user-defined python command.
>>
>> (hmm, this "show user" vs "help user-defined" difference isn't very
>> intuitive)
> 
> Hello Pedro,
> 
> Thanks for your review.
> 
> Indeed, this means we'd start to show python/scheme commands, but I
> wasn't aware of commit 7d74f2446.

I found it by noticing you were removing the
"c->user_commands would be NULL if it's a python/scheme command"
comment, and using "git blame" to find out why that comment was
there in the first place.

> 
> I don't see that as a problem, because python/scheme are also user
> commands (or, at least, are part of class_user class).  Considering that
> "help user-defined" also shows python/scheme commands, I believe it
> would be more practical to just list them on "show user" (should we
> update the doc string, as well).

I think we'll need to track down the original discussion, and
ask whoever was involved.  Otherwise, we'd just be going in
circles.  :-)

E.g., that commit changed the online help and the manual to
try to make that clear.

(gdb) help show user
Show definitions of non-python/scheme user defined commands.
Argument is the name of the user defined command.
With no argument, show definitions of all user defined commands.


> Either way, the "Not a user command" error message is quite misleading
> for python/scheme commands, though.

> 
> If you disagree, I'd be happy to update the patch to rely on another
> condition to avoid printing python/scheme commands.
> c->function.cfunc/sfunc == NULL seems to work pretty well to avoid
> printing python commands.
> 
> What do you think?
> 
>> What is this printing now ?
> 
> Now, it prints:
> 
> (gdb) show user
> User command "emptycmd":
> User command "cmd1":
>   print "Hello"
> 
> User command "python-hello":
> User command "user-defined":
> 

The question was actually in context of the gdb.base/default.exp change:

> --- a/gdb/testsuite/gdb.base/default.exp
> +++ b/gdb/testsuite/gdb.base/default.exp
> @@ -693,7 +693,7 @@ gdb_test "show prompt" "Gdb's prompt is \"$gdb_prompt \".*" "show prompt"
>  #test show radix
>  gdb_test "show radix" "Input and output radices set to decimal 10, hex a, octal 12." "show radix"
>  #test show user
> -gdb_test_no_output "show user" "show user"
> +gdb_test "show user" "User command \"user-defined\".*" "show user"

What are we showing now by default?

> Using the verification for cfunc/sfunc above, also avoids
> printing the "user-defined" line.

Hmm, but what is that "user-defined" command ?

Thanks,
Pedro Alves


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]