The '%' symbol is printed.
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.
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.
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:
typedef struct mdb_bitmask { const char *bm_name; /* String name to print */ u_longlong_t bm_mask; /* Mask for bits */ u_longlong_t bm_bits; /* Result for value & mask */ } mdb_bitmask_t;
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:
const mdb_bitmask_t t_flag_bits[] = { { "T_INTR_THREAD", T_INTR_THREAD, T_INTR_THREAD }, { "T_WAKEABLE", T_WAKEABLE, T_WAKEABLE }, { "T_TOMASK", T_TOMASK, T_TOMASK }, { "T_TALLOCSTK", T_TALLOCSTK, T_TALLOCSTK }, ... { NULL, 0, 0 } }; void thr_dump(kthread_t *t) { mdb_printf("t_flag = <%hb>\n", t->t_flag, t_flag_bits); ... }
If t_flag was set to 0x000a, the function would print:
t_flag = <T_WAKEABLE,T_TALLOCSTK>
Print the specified integer as an ASCII character.
Print the specified integer as a signed decimal value. Same as %i.
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.
Print the specified double using the same rules as %e, except that the exponent character will be 'E' instead of 'e'.
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).
Print the specified double using the same rules as %g, except that the exponent character will be 'E' instead of 'e'.
Print the specified integer as a signed decimal value. Same as %d.
Print the specified 32-bit unsigned integer as an Internet IPv4 address in dotted-decimal format (for example, the hexadecimal value 0xffffffff would print as 255.255.255.255).
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.
Print the specified integer as an unsigned octal value. If %#o is used, the alternate format prefixes the output with '0'.
Print the specified pointer (void *) as a hexadecimal value.
Print the specifierd integer as a signed octal value. If %#o is used, the alternate format prefixes the output with '0'.
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.
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.
Print the specified string (char *). If the string pointer is NULL, the string '<NULL>' is printed.
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.
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.
Print the specified integer as an unsigned decimal value.
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'.
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'.
The specified time_t is printed as the string 'year month day HH:MM:SS'.