### 3.2 Command Settings ¶

Many commands change their behavior according to command-specific variables or settings. These settings can be changed with the `set` subcommands. For example, the `print` command (see Examining Data) prints arrays differently depending on settings changeable with the commands `set print elements NUMBER-OF-ELEMENTS` and `set print array-indexes`, among others.

You can change these settings to your preference in the gdbinit files loaded at GDB startup. See What GDB Does During Startup.

The settings can also be changed interactively during the debugging session. For example, to change the limit of array elements to print, you can do the following:

    (gdb) set print elements 10
    (gdb) print some_array
    $1 = {0, 10, 20, 30, 40, 50, 60, 70, 80, 90...}

The above `set print elements 10` command changes the number of elements to print from the default of 200 to 10. If you only intend this limit of 10 to be used for printing `some_array`, then you must restore the limit back to 200, with `set print elements 200`.

Some commands allow overriding settings with command options. For example, the `print` command supports a number of options that allow overriding relevant global print settings as set by `set print` subcommands. See print options. The example above could be rewritten as:

    (gdb) print -elements 10 -- some_array
    $1 = {0, 10, 20, 30, 40, 50, 60, 70, 80, 90...}

Alternatively, you can use the `with` command to change a setting temporarily, for the duration of a command invocation.

`with setting [value] [-- command]` ¶
`w setting [value] [-- command]`

  Temporarily set setting to value for the duration of command.

  setting is any setting you can change with the `set` subcommands. value is the value to assign to `setting` while running `command`.

  If no command is provided, the last command executed is repeated.

  If a command is provided, it must be preceded by a double dash (`--`) separator. This is required because some settings accept free-form arguments, such as expressions or filenames.

  For example, the command

      (gdb) with print array on -- print some_array

  is equivalent to the following 3 commands:

      (gdb) set print array on
      (gdb) print some_array
      (gdb) set print array off

  The `with` command is particularly useful when you want to override a setting while running user-defined commands, or commands defined in Python or Guile. See Extending GDB.

      (gdb) with print pretty on -- my_complex_command

  To change several settings for the same command, you can nest `with` commands. For example, `with language ada -- with print elements 10` temporarily changes the language to Ada and sets a limit of 10 elements to print for arrays and strings.