Oracle® Developer Studio 12.5:使用 dbx 调试程序

退出打印视图

更新时间: 2016 年 6 月
 
 

print 命令

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

本地模式语法

print expression, ...

输出表达式 expression, ... 的值。

print -r expression

输出表达式 expression 的值,包括其继承成员。

print +r expression

dbx 环境变量 output_inherited_members 设置为 on 时,不输出继承成员。

print -d [-r] expression

显示动态类型而不是静态类型的表达式 expression

print +d [-r] expression

dbx 环境变量 output_dynamic_typeon 时,不使用动态类型的表达式 expression

print -s expression

输出当前 OpenMP 并列区域中每个线程的 expression 表达式的值(如果该表达式包含专用变量或线程专用变量)。

print -S [-r] [-d] expression

输出 expression 表达式的值,包括其静态成员(仅限于 C++)。

print +S [-r] [-d] expression

dbxenv 的变量 show_static_members 设置为 on 时不输出静态成员(仅限于 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 —m expression

dbxenv 变量 macro_expand 设置为 off 时,将宏扩展应用于 expression

print +m expression

dbxenv 变量 macro_expand 设置为 on 时,跳过表达式的宏扩展。

print -- expression

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

其中:

expression 是要输出其值的表达式。

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

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

  • 没有 n 转换。

  • 没有将 * 用于字段宽度和精度。

  • 没有 %<digits>$ 参数选择。

  • 每个格式字符串只有一项转换规范说明。

    下列简单语法定义了允许的格式:

    FORMAT ::= CHARS % FLAGS WIDTH PREC MOD SPEC CHARS

    CHARS ::= <any character sequence not containing a %>

    | %%

    | <empty>

    | CHARS CHARS

    FLAGS ::= + | - | <space> | # | 0 | <empty>

    WIDTH ::= <decimal_number> | <empty>

    PREC ::= . | . <decimal_number> | <empty>

    MOD ::= h | l | L | ll | <empty>

    SPEC ::= d | i | o | u | x | X | f | e | E | g | G |

    c | wc | s | ws | p

    如果指定的格式字符串不包含 %dbx 会自动预置一个。如果该格式字符串包含空格、分号或制表符,则整个格式字符串必须加上双引号。

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 对象的名称。