跳过导航链接 | |
退出打印视图 | |
Oracle Solaris Studio 12.3:使用 dbx 调试程序 Oracle Solaris Studio 12.3 Information Library (简体中文) |
宏扩展适用于 assign 命令中的变量和表达式(请参见assign 命令)。
在 call 命令中(请参见call 命令),宏扩展适用于正被调用的函数的名称以及正在传递的参数。
macro 命令(请参见macro 命令)采用任意表达式和宏并扩展宏。例如:
(dbx) macro D(1, 2) Expansion of: D(1, 2) is: d(1,2)
如果赋予 whatis 命令(请参见whatis 命令)一个宏,则它显示宏的定义。例如:
(dbx) whatis B #define B(x) b(x)
如果赋予 which 命令(请参见which 命令)一个宏,则它显示当前在作用域中处于活动状态的宏的定义位置。例如:
(dbx) which B2 `a.out`macro_wh.c`B2 # defined at defs2.h:3 # included from defs1.h:3 # included from macro_wh.c:23
如果赋予 whereis 命令(请参见whereis 命令)一个宏,则它显示已定义宏的所有位置。该列表只限于 dbx 已读取调试信息的模块。例如:
(dbx) whereis U macro: U # defined at macro_wh.c:21 macro: U # undefined at defs1.h:5
dbx 环境变量 macro_expand 控制这些命令是否扩展宏。缺省情况下,它设置为 on。
一般情况下,dbx 命令中的 +m 选项会导致命令跳过宏扩展。-m 选项强制进行宏扩展,即使 dbx 环境变量 macro_expand 设置为 off 也是如此。$[] 构造中的 -m 选项是一个例外,其中 -m 仅使宏被扩展,不进行求值。该例外有助于 shell 脚本中的宏扩展。