### 3.5 Getting Help

You can always ask GDB itself for information on its commands, using the command `help`.

`help`
`h`

  You can use `help` (abbreviated `h`) with no arguments to display a short list of named classes of commands:

      (gdb) help
      List of classes of commands:

      aliases -- Aliases of other commands
      breakpoints -- Making program stop at certain points
      data -- Examining data
      files -- Specifying and examining files
      internals -- Maintenance commands
      obscure -- Obscure features
      running -- Running the program
      stack -- Examining the stack
      status -- Status inquiries
      support -- Support facilities
      tracepoints -- Tracing of program execution without
                     stopping the program
      user-defined -- User-defined commands

      Type "help" followed by a class name for a list of
      commands in that class.
      Type "help" followed by command name for full
      documentation.
      Command name abbreviations are allowed if unambiguous.
      (gdb)

`help class`

  Using one of the general help classes as an argument, you can get a list of the individual commands in that class. For example, here is the help display for the class `status`:

      (gdb) help status
      Status inquiries.

      List of commands:

      info -- Generic command for showing things
              about the program being debugged
      show -- Generic command for showing things
              about the debugger

      Type "help" followed by command name for full
      documentation.
      Command name abbreviations are allowed if unambiguous.
      (gdb)

`help command`

  With a command name as `help` argument, GDB displays a short paragraph on how to use that command.

`apropos [-v] regexp`

  The `apropos` command searches through all of the GDB commands, and their documentation, for the regular expression specified in args. It prints out all matches found. The optional flag ‘`-v`’, which stands for ‘`verbose`’, indicates to output the full documentation of the matching commands and highlight the parts of the documentation matching regexp. For example:

      apropos alias

  results in:

      alias -- Define a new command that is an alias of an existing command
      aliases -- Aliases of other commands
      d -- Delete some breakpoints or auto-display expressions
      del -- Delete some breakpoints or auto-display expressions
      delete -- Delete some breakpoints or auto-display expressions

  while

      apropos -v cut.*thread apply

  results in the below output, where ‘`cut for 'thread apply`’ is highlighted if styling is enabled.

      taas -- Apply a command to all threads (ignoring errors
      and empty output).
      Usage: taas COMMAND
      shortcut for 'thread apply all -s COMMAND'

      tfaas -- Apply a command to all frames of all threads
      (ignoring errors and empty output).
      Usage: tfaas COMMAND
      shortcut for 'thread apply all -s frame apply all -s COMMAND'

`complete args`

  The `complete args` command lists all the possible completions for the beginning of a command. Use args to specify the beginning of the command you want completed. For example:

      complete i

  results in:

      if
      ignore
      info
      inspect

  This is intended for use by GNU Emacs.

In addition to `help`, you can use the GDB commands `info` and `show` to inquire about the state of your program, or the state of GDB itself. Each command supports many topics of inquiry; this manual introduces each of them in the appropriate context. The listings under `info` and under `show` in the Command, Variable, and Function Index point to all the sub-commands. See Command and Variable Index.

`info`

  This command (abbreviated `i`) is for describing the state of your program. For example, you can show the arguments passed to a function with `info args`, list the registers currently in use with `info registers`, or list the breakpoints you have set with `info breakpoints`. You can get a complete list of the `info` sub-commands with `help info`.

`set`

  You can assign the result of an expression to an environment variable with `set`. For example, you can set the GDB prompt to a $-sign with `set prompt $`.

`show`

  In contrast to `info`, `show` is for describing the state of GDB itself. You can change most of the things you can `show`, by using the related command `set`; for example, you can control what number system is used for displays with `set radix`, or simply inquire which is currently in use with `show radix`.

  To display all the settable parameters and their current values, you can use `show` with no arguments; you may also use `info set`. Both commands produce the same display.

Here are several miscellaneous `show` subcommands, all of which are exceptional in lacking corresponding `set` commands:

`show version`

  Show what version of GDB is running. You should include this information in GDB bug-reports. If multiple versions of GDB are in use at your site, you may need to determine which version of GDB you are running; as GDB evolves, new commands are introduced, and old ones may wither away. Also, many system vendors ship variant versions of GDB, and there are variant versions of GDB in GNU/Linux distributions as well. The version number is the same as the one announced when you start GDB.

`show copying`
`info copying`

  Display information about permission for copying GDB.

`show warranty`
`info warranty`

  Display the GNU “NO WARRANTY” statement, or a warranty, if your version of GDB comes with one.

`show configuration`

  Display detailed information about the way GDB was configured when it was built. This displays the optional arguments passed to the `configure` script and also configuration parameters detected automatically by `configure`. When reporting a GDB bug (see GDB Bugs), it is important to include this information in your report.