diff options
author | Tom Tromey <tromey@adacore.com> | 2023-03-16 10:57:32 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2023-05-23 10:09:28 -0600 |
commit | c97d123d6701fbf462e96db001cea07ed32e4efa (patch) | |
tree | 7442dc14459bc1e8874998d219dda702371f380e /gdb/doc | |
parent | e7a2797eb00dbbceb6796f1baa120055d174a229 (diff) | |
download | gdb-c97d123d6701fbf462e96db001cea07ed32e4efa.zip gdb-c97d123d6701fbf462e96db001cea07ed32e4efa.tar.gz gdb-c97d123d6701fbf462e96db001cea07ed32e4efa.tar.bz2 |
Implement gdb.execute_mi
This adds a new Python function, gdb.execute_mi, that can be used to
invoke an MI command but get the output as a Python object, rather
than a string. This is done by implementing a new ui_out subclass
that builds a Python object.
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=11688
Reviewed-By: Eli Zaretskii <eliz@gnu.org>
Diffstat (limited to 'gdb/doc')
-rw-r--r-- | gdb/doc/python.texi | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi index c93f289..d1f9311 100644 --- a/gdb/doc/python.texi +++ b/gdb/doc/python.texi @@ -4584,6 +4584,36 @@ commands have been added: (@value{GDBP}) @end smallexample +Conversely, it is possible to execute @sc{gdb/mi} commands from +Python, with the results being a Python object and not a +specially-formatted string. This is done with the +@code{gdb.execute_mi} function. + +@findex gdb.execute_mi +@defun gdb.execute_mi (command @r{[}, arg @r{]}@dots{}) +Invoke a @sc{gdb/mi} command. @var{command} is the name of the +command, a string. The arguments, @var{arg}, are passed to the +command. Each argument must also be a string. + +This function returns a Python dictionary whose contents reflect the +corresponding @sc{GDB/MI} command's output. Refer to the +documentation for these commands for details. Lists are represented +as Python lists, and tuples are represented as Python dictionaries. + +If the command fails, it will raise a Python exception. +@end defun + +Here is how this works using the commands from the example above: + +@smallexample +(@value{GDBP}) python print(gdb.execute_mi("-echo-dict", "abc", "def", "ghi")) +@{'dict': @{'argv': ['abc', 'def', 'ghi']@}@} +(@value{GDBP}) python print(gdb.execute_mi("-echo-list", "abc", "def", "ghi")) +@{'list': ['abc', 'def', 'ghi']@} +(@value{GDBP}) python print(gdb.execute_mi("-echo-string", "abc", "def", "ghi")) +@{'string': 'abc, def, ghi'@} +@end smallexample + @node Parameters In Python @subsubsection Parameters In Python |