### 22.5 Output Styling ¶

GDB can style its output on a capable terminal. This is enabled by default on most systems, but disabled by default when in batch mode (see Choosing Modes). Various style settings are available; and styles can also be disabled entirely.

`set style enabled ‘`on|off`’`

  Enable or disable all styling. The default is host-dependent, with most hosts defaulting to ‘`on`’.

  If the `NO_COLOR` environment variable is set to a non-empty value, then GDB will change this to ‘`off`’ at startup.

`show style enabled`

  Show the current state of styling.

`set style sources ‘`on|off`’`

  Enable or disable source code styling. This affects whether source code, such as the output of the `list` command, is styled. The default is ‘`on`’. Note that source styling only works if styling in general is enabled, and if a source highlighting library is available to GDB.

  There are two ways that highlighting can be done. First, if GDB was linked with the GNU Source Highlight library, then it is used. Otherwise, if GDB was configured with Python scripting support, and if the Python Pygments package is available, then it will be used.

`show style sources`

  Show the current state of source code styling.

`set style tui-current-position ‘`on|off`’`

  Enable or disable styling of the source and assembly code highlighted by the TUI’s current position indicator. The default is ‘`off`’. See GDB Text User Interface.

`show style tui-current-position`

  Show whether the source and assembly code highlighted by the TUI’s current position indicator is styled.

`set style disassembler enabled ‘`on|off`’`

  Enable or disable disassembler styling. This affects whether disassembler output, such as the output of the `disassemble` command, is styled. Disassembler styling only works if styling in general is enabled (with `set style enabled on`), and if a source highlighting library is available to GDB.

  The two source highlighting libraries that GDB could use to style disassembler output are; GDB’s builtin disassembler, or the Python Pygments package.

  GDB’s first choice will be to use the builtin disassembler for styling, this usually provides better results, being able to style different types of instruction operands differently. However, the builtin disassembler is not able to style all architectures.

  For architectures that the builtin disassembler is unable to style, GDB will fall back to use the Python Pygments package where possible. In order to use the Python Pygments package, GDB must be built with Python support, and the Pygments package must be installed.

  If neither of these options are available then GDB will produce unstyled disassembler output, even when this setting is ‘`on`’.

  To discover if the current architecture supports styling using the builtin disassembler library see `maint show libopcodes-styling enabled`.

`show style disassembler enabled`

  Show the current state of disassembler styling.

Subcommands of `set style` control specific forms of styling. These subcommands all follow the same pattern: each style-able object can be styled with a foreground color, a background color, and an intensity.

For example, the style of file names can be controlled using the `set style filename` group of commands:

`set style filename background color`

  Set the background to color. Valid colors are ‘`none`’ (meaning the terminal’s default color), ‘`black`’, ‘`red`’, ‘`green`’, ‘`yellow`’, ‘`blue`’, ‘`magenta`’, ‘`cyan`’, and‘`white`’.

`set style filename foreground color`

  Set the foreground to color. Valid colors are ‘`none`’ (meaning the terminal’s default color), ‘`black`’, ‘`red`’, ‘`green`’, ‘`yellow`’, ‘`blue`’, ‘`magenta`’, ‘`cyan`’, and‘`white`’.

`set style filename intensity value`

  Set the intensity to value. Valid intensities are ‘`normal`’ (the default), ‘`bold`’, and ‘`dim`’.

The `show style` command and its subcommands are styling a style name in their output using its own style. So, use `show style` to see the complete list of styles, their characteristics and the visual aspect of each style.

The style-able objects are:

`command`

  Control the styling of any GDB commands that are displayed by GDB. By default, this style’s intensity is bold.

`filename`

  Control the styling of file names and URLs. By default, this style’s foreground color is green.

`function`

  Control the styling of function names. These are managed with the `set style function` family of commands. By default, this style’s foreground color is yellow.

  This style is also used for symbol names in styled disassembler output if GDB is using its builtin disassembler library for styling (see `set style disassembler enabled`).

`line-number`

  Control the styling of line numbers. By default, this style’s intensity is dim.

`variable`

  Control the styling of variable names. These are managed with the `set style variable` family of commands. By default, this style’s foreground color is cyan.

`address`

  Control the styling of addresses. These are managed with the `set style address` family of commands. By default, this style’s foreground color is blue.

  This style is also used for addresses in styled disassembler output if GDB is using its builtin disassembler library for styling (see `set style disassembler enabled`).

`version`

  Control the styling of GDB’s version number text. By default, this style’s foreground color is magenta and it has bold intensity. The version number is displayed in two places, the output of `show version`, and when GDB starts up.

  In order to control how GDB styles the version number at startup, add the `set style version` family of commands to the early initialization command file (see Initialization Files).

`title`

  Control the styling of titles. These are managed with the `set style title` family of commands. By default, this style’s intensity is bold. The title style is used when displaying the header line of a list, for example the first line of the output of `info breakpoints` (see Setting Breakpoints).

`highlight`

  Control the styling of highlightings. These are managed with the `set style highlight` family of commands. By default, this style’s foreground color is red. Commands are using the highlight style to draw the user attention to some specific parts of their output. For example, the command `apropos -v REGEXP` uses the highlight style to mark the documentation parts matching regexp.

`metadata`

  Control the styling of data annotations added by GDB to data it displays. By default, this style’s intensity is dim. Metadata annotations include the ‘`repeats n times`’ annotation for suppressed display of repeated array elements (see Print Settings), ‘`<unavailable>`’ and ‘`<error descr>`’ annotations for errors and ‘`<optimized-out>`’ annotations for optimized-out values in displaying stack frame information in backtraces (see Backtraces), etc.

`tui-border`

  Control the styling of the TUI border. Note that, unlike other styling options, only the color of the border can be controlled via `set style`. This was done for compatibility reasons, as TUI controls to set the border’s intensity predated the addition of general styling to GDB. See TUI Configuration Variables.

`tui-active-border`

  Control the styling of the active TUI border; that is, the TUI window that has the focus.

`disassembler comment`

  Control the styling of comments in the disassembler output. These are managed with the `set style disassembler comment` family of commands. This style is only used when GDB is styling using its builtin disassembler library (see `set style disassembler enabled`). By default, this style’s intensity is dim, and its foreground color is white.

`disassembler immediate`

  Control the styling of numeric operands in the disassembler output. These are managed with the `set style disassembler immediate` family of commands. This style is not used for instruction operands that represent addresses, in that case the ‘`disassembler address`’ style is used. This style is only used when GDB is styling using its builtin disassembler library. By default, this style’s foreground color is blue.

`disassembler address`

  Control the styling of address operands in the disassembler output. This is an alias for the ‘`address`’ style.

`disassembler symbol`

  Control the styling of symbol names in the disassembler output. This is an alias for the ‘`function`’ style.

`disassembler mnemonic`

  Control the styling of instruction mnemonics in the disassembler output. These are managed with the `set style disassembler mnemonic` family of commands. This style is also used for assembler directives, e.g. `.byte`, `.word`, etc. This style is only used when GDB is styling using its builtin disassembler library. By default, this style’s foreground color is green.

`disassembler register`

  Control the styling of register operands in the disassembler output. These are managed with the `set style disassembler register` family of commands. This style is only used when GDB is styling using its builtin disassembler library. By default, this style’s foreground color is red.