diff options
author | Joel Brobecker <brobecker@adacore.com> | 2013-11-12 14:51:30 +0400 |
---|---|---|
committer | Joel Brobecker <brobecker@adacore.com> | 2013-12-03 07:57:24 +0400 |
commit | 6b7cbff192a5335b96fdcf887b32fc6e0100b6ef (patch) | |
tree | 6e8f221ca966fa25c1cdb91156283229bb73268a /gdb/doc | |
parent | 310bf259c3524c29542f01514bae4be2f21d903e (diff) | |
download | gdb-6b7cbff192a5335b96fdcf887b32fc6e0100b6ef.zip gdb-6b7cbff192a5335b96fdcf887b32fc6e0100b6ef.tar.gz gdb-6b7cbff192a5335b96fdcf887b32fc6e0100b6ef.tar.bz2 |
New GDB/MI command "-info-gdb-mi-command"
This patch adds a new GDB/MI command meant for graphical frontends
trying to determine whether a given GDB/MI command exists or not.
Examples:
-info-gdb-mi-command unsupported-command
^done,command={exists="false"}
(gdb)
-info-gdb-mi-command symbol-list-lines
^done,command={exists="true"}
(gdb)
At the moment, this is the only piece of information that this
command returns.
Eventually, and if needed, we can extend it to provide
command-specific pieces of information, such as updates to
the command's syntax since inception. This could become,
for instance:
-info-gdb-mi-command symbol-list-lines
^done,command={exists="true",features=[]}
(gdb)
-info-gdb-mi-command catch-assert
^done,command={exists="true",features=["conditions"]}
In the first case, it would mean that no extra features,
while in the second, it announces that the -catch-assert
command in this version of the debugger supports a feature
called "condition" - exact semantics to be documented with
combined with the rest of the queried command's documentation.
But for now, we start small, and only worry about existance.
And to bootstrap the process, I have added an entry in the
output of the -list-features command as well ("info-gdb-mi-command"),
allowing the graphical frontends to go through the following process:
1. Send -list-features, collect info from there as before;
2. Check if the output contains "info-gdb-mi-command".
If it does, then support for various commands can be
queried though -info-gdb-mi-command. Newer commands
will be expected to always be checked via this new
-info-gdb-mi-command.
gdb/ChangeLog:
* mi/mi-cmds.h (mi_cmd_info_gdb_mi_command): Declare.
* mi/mi-cmd-info.c (mi_cmd_info_gdb_mi_command): New function.
* mi/mi-cmds.c (mi_cmds): Add -info-gdb-mi-command command.
* mi/mi-main.c (mi_cmd_list_features): Add "info-gdb-mi-command"
field to output of "-list-features".
* NEWS: Add entry for new -info-gdb-mi-command.
gdb/doc/ChangeLog:
* gdb.texinfo (GDB/MI Miscellaneous Commands): Document
the new -info-gdb-mi-command GDB/MI command. Document
the meaning of "-info-gdb-mi-command" in the output of
-list-features.
gdb/testsuite/ChangeLog:
* gdb.mi/mi-i-cmd.exp: New file.
Diffstat (limited to 'gdb/doc')
-rw-r--r-- | gdb/doc/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/doc/gdb.texinfo | 53 |
2 files changed, 60 insertions, 0 deletions
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 87d28c0..329c293 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,10 @@ +2013-12-03 Joel Brobecker <brobecker@adacore.com> + + * gdb.texinfo (GDB/MI Miscellaneous Commands): Document + the new -info-gdb-mi-command GDB/MI command. Document + the meaning of "-info-gdb-mi-command" in the output of + -list-features. + 2013-11-29 Pedro Alves <palves@redhat.com> * gdb.texinfo (Frames In Python) <gdb.FRAME_UNWIND_NULL_ID>: diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index ddb4b38..5b1021b 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -35098,6 +35098,57 @@ default shows this information when you start an interactive session. (gdb) @end smallexample +@subheading The @code{-info-gdb-mi-command} Command +@cindex @code{-info-gdb-mi-command} +@findex -info-gdb-mi-command + +@subsubheading Synopsis + +@smallexample + -info-gdb-mi-command @var{cmd_name} +@end smallexample + +Query support for the @sc{gdb/mi} command named @var{cmd_name}. + +Note that the dash (@code{-}) starting all @sc{gdb/mi} commands +is technically not part of the command name (@pxref{GDB/MI Input +Syntax}), and thus should be omitted in @var{cmd_name}. However, +for ease of use, this command also accepts the form with the leading +dash. + +@subsubheading @value{GDBN} Command + +There is no corresponding @value{GDBN} command. + +@subsubheading Result + +The result is a tuple. There is currently only one field: + +@table @samp +@item exists +This field is equal to @code{"true"} if the @sc{gdb/mi} command exists, +@code{"false"} otherwise. + +@end table + +@subsubheading Example + +Here is an example where the @sc{gdb/mi} command does not exist: + +@smallexample +-info-gdb-mi-command unsupported-command +^done,command=@{exists="false"@} +@end smallexample + +@noindent +And here is an example where the @sc{gdb/mi} command is known +to the debugger: + +@smallexample +-info-gdb-mi-command symbol-list-lines +^done,command=@{exists="true"@} +@end smallexample + @subheading The @code{-list-features} Command @findex -list-features @@ -35151,6 +35202,8 @@ exceptions: @code{-info-ada-exceptions}, @code{-catch-assert} and @item language-option Indicates that all @sc{gdb/mi} commands accept the @option{--language} option (@pxref{Context management}). +@item info-gdb-mi-command +Indicates support for the @code{-info-gdb-mi-command} command. @end table @subheading The @code{-list-target-features} Command |