JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.3:使用 dbx 调试程序     Oracle Solaris Studio 12.3 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  dbx 入门

2.  启动 dbx

3.  定制 dbx

4.  查看和导航到代码

5.  控制程序执行

6.  设置断点和跟踪

7.  使用调用堆栈

8.  求值和显示数据

9.  使用运行时检查

10.  修复并继续

11.  调试多线程应用程序

12.  调试子进程

13.  调试 OpenMP 程序

14.  处理信号

15.  使用 dbx 调试 C++

16.  使用 dbx 调试 Fortran

17.  使用 dbx 调试 Java 应用程序

18.  在机器指令级调试

19.  将 dbx 与 Korn Shell 配合使用

20.  调试共享库

A.  修改程序状态

B.  事件管理

C.  宏

宏扩展

宏定义

编译器和编译器选项

功能方面的权衡

限制

略读 (skimming) 错误

使用 pathmap 命令改进略读 (skimming)

D.  命令参考

索引

宏扩展

宏扩展适用于 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 脚本中的宏扩展。