Sun Studio 12 Update 1:使用 dbx 调试程序

print 命令

在本地模式中,print 命令打印表达式的值。在 Java 模式中,print 命令打印表达式、局部变量或参数的值。

本地模式语法

print expression, ...

打印表达式 expression, ... 的值。

print -r expression

打印表达式 expression 的值,包括其继承成员(仅限于 C++)。

print +r expression

dbx 环境变量 output_inherited_members 为 on 时,不打印继承成员(仅限于 C++)。

print -d [-r] expression

显示动态类型而不是静态类型的表达式 expression(仅限于 C++)。

print +d [-r] expression

dbx 环境变量 output_dynamic_type 为 on 时,不使用动态类型的表达式 expression(仅限于 C++)。

print -p expression

调用 prettyprint 函数。

print +p expression

dbx 环境变量 output_pretty_print 为 on 时,不调用 prettyprint 函数。

print -L expression

如果打印对象 expression 大于 4K,强制打印。

print +l expression

如果表达式是一个字符串 (char *),则只打印地址,不打印字符。

print -l expression

('Literal') 不打印左侧内容。如果表达式是一个字符串 (char *),则不打印地址,只打印字符串的原始字符,且不带引号。

print -fformat expression

使用 format 作为整数、字符串或浮点表达式的格式。

print -Fformat expression

使用指定格式但不打印左侧内容(变量名或表达式)。

print -o expression

以序数值形式打印必须是枚举的 expression 值。此处也可以使用格式字符串 (-fformat)。对于非枚举型表达式,忽略此选项。

print -- expression

"--" 表示标志参数的结尾。如果 expression 以加号或减号开头,这很有用(有关作用域求解规则,请参见程序作用域)。

其中:

expression 是要打印其值的表达式。

format 是打印表达式时要使用的输出格式。如果该格式不适用于指定类型,则会默认忽略该格式字符串,dbx 将使用其内置打印机制。

允许的格式是 printf(3S) 命令使用的格式的子集。遵循以下约束:

Java 模式语法

print expression, ... | ...

打印表达式 expression, ... 或标识符 identifier, ... 的值。

print -r expression | identifier

打印 expressionidentifier 的值,包括其继承成员。

print +r expression | identifier

dbx 环境变量 output_inherited_members 为 on 时,不打印继承成员。

print -d [-r] expression | identifier

显示动态类型而不是静态类型 expressionidentifier

print +d [-r] expression | identifier

dbx 环境变量 output_dynamic_type 为 on 时,不使用动态类型的 expressionidentifier

print -- expression | identifier

"--" 表示标志参数的结尾。如果 expression 以加号或减号开头,这很有用(有关作用域求解规则,请参见程序作用域)。

其中:

class_name 是 Java 类的名称,可以使用包路径(使用句点 (.) 作为限定符,例如 test1.extra.T1.Inner),也可以使用完整路径名(前面加磅符号 (#), 并使用斜线 (/) 和美元符号 ($) 作为限定符,例如 #test1/extra/T1$Inner)。如果使用 $ 限定符,请使用引号将 class_name 引起来。

expression 是要打印其值的 Java 表达式。

field_name 是类中字段的名称。

identifier 是一个局部变量或参数,包括 this、当前类实例变量 (object_name.field_name) 或类(静态)变量 (class_name.field_name)。

object_name 是 Java 对象的名称。