This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFC] New GDB/MI command "-info-gdb-mi-command"
- From: Joel Brobecker <brobecker at adacore dot com>
- To: André Pönitz <andre dot poenitz at mathematik dot tu-chemnitz dot de>
- Cc: Tom Tromey <tromey at redhat dot com>, gdb-patches at sourceware dot org
- Date: Wed, 13 Nov 2013 06:15:14 +0400
- Subject: Re: [RFC] New GDB/MI command "-info-gdb-mi-command"
- Authentication-results: sourceware.org; auth=none
- References: <8761rzknb4 dot fsf at fleche dot redhat dot com> <1384255504-28444-1-git-send-email-brobecker at adacore dot com> <20131112205229 dot GA7068 at klara dot mpi dot htwm dot de>
> I am not sure I agree with the judgement of benefits here. The basic
> yes/no information is already there:
>
> (gdb) -unsupported-command
> ^error,msg="Undefined MI command: unsupported-command"
> (gdb) -symbol-list-lines
> ^error,msg="-symbol-list-lines: Usage: SOURCE_FILENAME"
>
> It's not nice, but "works".
I disagree with your assessment of "works". I can think of a number
of scenarios where this would be problematic:
The first and most obvious to me is the case where the debugger is
run with a non-English LANG. If you base your detection on parsing
the error msg, then i18n ruins your plan. And if you base your detection
on the presence of the error alone, then commands that take no argument
may return an error, which by no means indicates that the command does not
exist.
> In addition, a yes-or-no is not even what might be needed.
Well, the IDE team at AdaCore needs that information in order to
support the variety of GDB versions out there, and I also agreed
with them that this was a sensible request.
> Look e.g. at the "python" advertisement in -list-features output
> ^done,features=["frozen-varobjs","pending-breakpoints","thread-info",
> "data-read-memory-bytes","breakpoint-notifications","ada-task-info","python"]
>
> It does not indicate whether it is properly installed (datadir...) nor
> whether the version of Python is compatible with the script I want to
> execute. So in practice, checking -list-features is just extra effort
> giving only a subset of the information I would need for an "ok to use"
> decision, and it's quicker and more reliable to just execute the command
> and handle errors.
>
> It's hard to imagine that this will ever cover enough of GDB features
> and questions a frontend needs to have answered.
If we were discussing about the specific issues regarding the use of
Python in your example, I would say that this is outside the scope of
this new command.
If you are trying to make a general point, then can you please tell
us how you think we can improve it? If not, you are free to find it
useless and to prefer to just use your execution test. But I definitely
think it's cleaner to query the debugger with a well documented interface,
rather than relying on detecting certain kinds of errors.
--
Joel