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.  查看和导航到代码

导航到代码

导航到文件

导航到函数

从 C++ 二义函数名称列表中选择

在多个具体值中进行选择

打印源码列表

在调用堆栈中移动以导航到代码

程序位置的类型

程序作用域

反映当前作用域的变量

访问作用域

访问作用域的组件

更改访问作用域

使用作用域转换操作符限定符号

反引号操作符

C++ 双冒号作用域转换操作符

块局部操作符

链接程序名

查找符号

打印符号具体值列表

确定 dbx 使用哪个符号

作用域转换搜索路径

放宽作用域查找规则

查看变量、成员、类型和类

查找变量、成员和函数的定义

查找类型和类的定义

目标文件和可执行文件中的调试信息

目标文件装入

列出模块的调试信息

列出模块

查找源文件和目标文件

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.  宏

D.  命令参考

索引

目标文件和可执行文件中的调试信息

通常,您希望使用 -g 选项来编译源文件,以使程序的可调试性更好。-g 选项会使编译器将调试信息(采用 stabs 或 Dwarf 格式)与程序的代码和数据一起记录到目标文件中。

需要调试信息时,dbx 会根据需要解析和装入每个目标文件(模块)的调试信息。可以使用 module 命令让 dbx 装入任何特定模块或所有模块的调试信息。另请参见查找源文件和目标文件

目标文件装入

将目标 (.o) 文件链接到一起后,链接程序可选择只将摘要信息存储到生成的装入对象中。dbx 可以在运行时使用此摘要信息从目标文件本身(而不是可执行文件)装入其余调试信息。生成的可执行文件占用的磁盘资源较小,但要求在 dbx 运行时能够使用目标文件。

使用 -xs 选项编译目标文件可覆盖此要求,从而使这些目标文件的所有调试信息在链接时都被放入可执行文件中。

如果使用目标文件创建归档库(.a 文件),并且在程序中使用归档库,则 dbx 会根据需要从归档库中提取目标文件。此时不需要原始目标文件。

将所有调试信息放入可执行文件的唯一缺点是会占用更多磁盘空间。由于运行时调试信息并未装入到进程映像中,因此程序运行速度不会降低。

使用 stabs 时的缺省行为是使编译器只将摘要信息放入可执行文件中。

DWARF 格式尚不支持目标文件装入。


注 - 记录相同的信息时,使用 DWARF 格式要比使用 stabs 格式紧凑得多。但是,由于将全部信息都复制到可执行文件中,因此 DWARF 信息所占的空间看上去要比 stabs 信息所占的空间大。


列出模块的调试信息

module 命令及其选项有助于在调试会话期间跟踪程序模块。可使用 module 命令读入一个模块或所有模块的调试信息。一般情况下,dbx 会根据需要自动并且延后读入模块的调试信息。

读入模块 name 的调试信息,请键入:

(dbx) module [-f] [-q] name

读入所有模块的调试信息,请键入:

(dbx) module [-f] [-q] -a

其中:

-a

指定所有模块。

-f

强制读取调试信息,即使该文件比可执行文件新也是如此。

-q

指定安静模式。

-v

指定冗余模式,在该模式下会输出语言、文件名等信息。这是缺省值。

打印当前模块的名称,请键入:

(dbx) module

列出模块

modules 命令通过列出模块名称来帮助您跟踪模块。

要列出包含已读入 dbx 的调试信息的模块的名称,请键入:

(dbx) modules [-v] -read

要列出所有程序模块(不管它们是否包含调试信息)的名称,请键入:

(dbx) modules [-v]

要列出包含调试信息的所有程序模块,请键入:

(dbx) modules [-v] -debug

其中:

-v

指定冗余模式,在该模式下会输出语言、文件名等信息。