### 27.20 Miscellaneous gdb/mi Commands

#### The `-gdb-exit` Command

##### Synopsis

          -gdb-exit

Exit gdb immediately.

##### gdb Command

Approximately corresponds to ‘`quit`’.

##### Example

         (gdb)
         -gdb-exit
         ^exit

#### The `-gdb-set` Command

##### Synopsis

          -gdb-set

Set an internal gdb variable.

##### gdb Command

The corresponding gdb command is ‘`set`’.

##### Example

         (gdb)
         -gdb-set $foo=3
         ^done
         (gdb)

#### The `-gdb-show` Command

##### Synopsis

          -gdb-show

Show the current value of a gdb variable.

##### gdb Command

The corresponding gdb command is ‘`show`’.

##### Example

         (gdb)
         -gdb-show annotate
         ^done,value="0"
         (gdb)

#### The `-gdb-version` Command

##### Synopsis

          -gdb-version

Show version information for gdb. Used mostly in testing.

##### gdb Command

The gdb equivalent is ‘`show version`’. gdb by default shows this information when you start an interactive session.

##### Example

         (gdb)
         -gdb-version
         ~GNU gdb 5.2.1
         ~Copyright 2000 Free Software Foundation, Inc.
         ~GDB is free software, covered by the GNU General Public License, and
         ~you are welcome to change it and/or distribute copies of it under
         ~ certain conditions.
         ~Type "show copying" to see the conditions.
         ~There is absolutely no warranty for GDB.  Type "show warranty" for
         ~ details.
         ~This GDB was configured as
          "--host=sparc-sun-solaris2.5.1 --target=ppc-eabi".
         ^done
         (gdb)

#### The `-list-features` Command

Returns a list of particular features of the MI protocol that this version of gdb implements. A feature can be a command, or a new field in an output of some command, or even an important bugfix. While a frontend can sometimes detect presence of a feature at runtime, it is easier to perform detection at debugger startup.

The command returns a list of strings, with each string naming an available feature. Each returned string is just a name, it does not have any internal structure. The list of possible feature names is given below.

Example output:

         (gdb) -list-features
         ^done,result=["feature1","feature2"]

The current list of features is:

‘`frozen-varobjs`’
  Indicates presence of the `-var-set-frozen` command, as well as possible presense of the `frozen` field in the output of `-varobj-create`.
‘`pending-breakpoints`’
  Indicates presence of the `-f` option to the `-break-insert` command.
‘`python`’
  Indicates presence of Python scripting support, Python-based pretty-printing commands, and possible presence of the ‘`display_hint`’ field in the output of `-var-list-children`
‘`thread-info`’
  Indicates presence of the `-thread-info` command.

#### The `-list-target-features` Command

Returns a list of particular features that are supported by the target. Those features affect the permitted MI commands, but unlike the features reported by the `-list-features` command, the features depend on which target GDB is using at the moment. Whenever a target can change, due to commands such as `-target-select`, `-target-attach` or `-exec-run`, the list of target features may change, and the frontend should obtain it again. Example output:

         (gdb) -list-features
         ^done,result=["async"]

The current list of features is:

‘`async`’
  Indicates that the target is capable of asynchronous command execution, which means that gdb will accept further commands while the target is running.

#### The `-list-thread-groups` Command

#### Synopsis

         -list-thread-groups [ --available ] [ group ]

When used without the group parameter, lists top-level thread groups that are being debugged. When used with the group parameter, the children of the specified group are listed. The children can be either threads, or other groups. At present, gdb will not report both threads and groups as children at the same time, but it may change in future.

With the ‘`--available`’ option, instead of reporting groups that are been debugged, GDB will report all thread groups available on the target. Using the ‘`--available`’ option together with group is not allowed.

#### Example

         gdb
         -list-thread-groups
         ^done,groups=[{id="17",type="process",pid="yyy",num_children="2"}]
         -list-thread-groups 17
         ^done,threads=[{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)",
            frame={level="0",addr="0xffffe410",func="__kernel_vsyscall",args=[]},state="running"},
         {id="1",target-id="Thread 0xb7e156b0 (LWP 21254)",
            frame={level="0",addr="0x0804891f",func="foo",args=[{name="i",value="10"}],
                    file="/tmp/a.c",fullname="/tmp/a.c",line="158"},state="running"}]]

#### The `-interpreter-exec` Command

#### Synopsis

         -interpreter-exec interpreter command

Execute the specified command in the given interpreter.

#### gdb Command

The corresponding gdb command is ‘`interpreter-exec`’.

#### Example

         (gdb)
         -interpreter-exec console "break main"
         &"During symbol reading, couldn't parse type; debugger out of date?.\n"
         &"During symbol reading, bad structure-type format.\n"
         ~"Breakpoint 1 at 0x8074fc6: file ../../src/gdb/main.c, line 743.\n"
         ^done
         (gdb)

#### The `-inferior-tty-set` Command

#### Synopsis

         -inferior-tty-set /dev/pts/1

Set terminal for future runs of the program being debugged.

#### gdb Command

The corresponding gdb command is ‘`set inferior-tty`’ /dev/pts/1.

#### Example

         (gdb)
         -inferior-tty-set /dev/pts/1
         ^done
         (gdb)

#### The `-inferior-tty-show` Command

#### Synopsis

         -inferior-tty-show

Show terminal for future runs of program being debugged.

#### gdb Command

The corresponding gdb command is ‘`show inferior-tty`’.

#### Example

         (gdb)
         -inferior-tty-set /dev/pts/1
         ^done
         (gdb)
         -inferior-tty-show
         ^done,inferior_tty_terminal="/dev/pts/1"
         (gdb)

#### The `-enable-timings` Command

#### Synopsis

         -enable-timings [yes | no]

Toggle the printing of the wallclock, user and system times for an MI command as a field in its output. This command is to help frontend developers optimize the performance of their code. No argument is equivalent to ‘`yes`’.

#### gdb Command

No equivalent.

#### Example

         (gdb)
         -enable-timings
         ^done
         (gdb)
         -break-insert main
         ^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",
         addr="0x080484ed",func="main",file="myprog.c",
         fullname="/home/nickrob/myprog.c",line="73",times="0"},
         time={wallclock="0.05185",user="0.00800",system="0.00000"}
         (gdb)
         -enable-timings no
         ^done
         (gdb)
         -exec-run
         ^running
         (gdb)
         *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0",
         frame={addr="0x080484ed",func="main",args=[{name="argc",value="1"},
         {name="argv",value="0xbfb60364"}],file="myprog.c",
         fullname="/home/nickrob/myprog.c",line="73"}
         (gdb)