Format Specifiers

%%

The '%' symbol is printed.

%a

Prints an address in symbolic form. The minimum size of the
value associated with %a is a uintptr_t;
specifying %la is not necessary. If address-to-symbol conversion
is on, the debugger will attempt to convert the address to a symbol name followed
by an offset in the current output radix and print this string; otherwise,
the value is printed in the default output radix. If %#a is
used, the alternate format adds a ':' suffix to the output.

%A

This format is identical to %a, except
when an address cannot be converted to a symbol name plus an offset, nothing
is printed. If %#A is used, the alternate format prints
a '?' when address conversion fails.

%b

Decode and print a bit field in symbolic form. This specifier
expects two consecutive arguments: the bit field value (int for %b, long for %lb, and so forth),
and a pointer to an array of mdb_bitmask_t structures:

The array should be terminated by a structure whose bm_name field
is set to NULL. When %b is used, the debugger reads the
value argument, then iterates through each mdb_bitmask structure
checking to see if:

(value & bitmask->bm_mask) == bitmask->bm_bits

If this expression is true, the bm_name string is
printed. Each string printed is separated by a comma. The following example
shows how %b can be used to decode the t_flag field
in a kthread_t:

If %#b is specified, the union of all bits that were
not matched by an element in the bitmask array is printed as a hexadecimal
value following the decoded names.

%c

Print the specified integer as an ASCII character.

%d

Print the specified integer as a signed decimal value. Same
as %i. If %#d is specified, the alternate
format prefixes the value with '0t'.

%e

Print the specified double in the floating-point format [+/-]d.ddddddde[+/-]dd,
where there is one digit before the radix character, seven digits of precision,
and at least two digits following the exponent.

%E

Print the specified double using the same rules as %e,
except that the exponent character will be 'E' instead
of 'e'.

%g

Print the specified double in the same floating-point format
as %e, but with sixteen digits of precision. If %llg is
specified, the argument is expected to be of type long double (quad-precision
floating-point value).

%G

Print the specified double using the same rules as %g,
except that the exponent character will be 'E' instead
of 'e'.

%i

Print the specified integer as a signed decimal value. Same
as %d. If %#i is specified, the alternate
format prefixes the value with '0t'.

Print a margin of whitespace. If no field is specified, the
default output margin width is used; otherwise, the field width determines
the number of characters of white space that are printed.

%o

Print the specified integer as an unsigned octal value. If %#o is used, the alternate format prefixes the output with '0'.

%p

Print the specified pointer (void *) as
a hexadecimal value.

%q

Print the specified integer as a signed octal value. If %#o is used, the alternate format prefixes the output with '0'.

%r

Print the specified integer as an unsigned value in the current
output radix. The user can change the output radix using the $d dcmd.
If %#r is specified, the alternate format prefixes the
value with the appropriate base prefix: '0i' for binary,
'0o' for octal, '0t' for decimal, or
'0x' for hexadecimal.

%R

Print the specified integer as a signed value in the current
output radix. If %#R is specified, the alternate format
prefixes the value with the appropriate base prefix.

%s

Print the specified string (char *). If
the string pointer is NULL, the string '<NULL>' is printed.

%t

Advance one or more tab stops. If no width is specified, output
advances to the next tab stop; otherwise the field width determines how many
tab stops are advanced.

%T

Advance the output column to the next multiple of the field
width. If no field width is specified, no action is taken. If the current
output column is not a multiple of the field width, white space is added to
advance the output column.

%u

Print the specified integer as an unsigned decimal value.
If %#u is specified, the alternate format prefixes the
value with '0t'.

%x

Print the specified integer as a hexadecimal value. The characters
a-f are used as the digits for the values 10-15. If %#x is
specified, the alternate format prefixes the value with '0x'.

%X

Print the specified integer as a hexadecimal value. The characters
A-F are used as the digits for the values 10-15. If %#X is
specified, the alternate format prefixes the value with '0X'.

%Y

The specified time_t is printed as the
string 'year month day HH:MM:SS'.