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.  命令参考

索引

导航到代码

当程序停止时,您可以导航到程序中其他地方的代码。可导航到任何函数或文件,只要它们是程序的一部分。导航会设置当前作用域(请参见程序作用域)。这对于确定要在何时以及在哪一源代码行设置 stop at 断点非常有用。

导航到文件

可以导航到 dbx 将其识别为程序一部分的任何文件(即使模块或文件未使用 -g 选项进行编译也是如此)。要导航到文件:

(dbx) file filename

使用不带参数的 file 命令将回显当前导航的文件的文件名。

(dbx) file

如果不指定行号,dbx 会从文件的第一行开始显示文件。

(dbx) file filename ; list line_number

有关在源代码行中设置 "stop at" 断点的信息,请参见在源代码行设置 stop 断点

导航到函数

可以使用 func 命令导航到函数。要导航到函数,请键入命令 func,后跟函数名。例如:

(dbx) func adjust_speed

func 命令本身会回显当前函数。

有关更多信息,请参见func 命令

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

如果尝试导航到具有二义名称或重载函数名称的 C++ 成员函数,则会显示一个列表,其中列出了所有具有重载名称的函数。键入要导航的函数的号码。如果您知道函数所属的具体类,则可以键入类名和函数名。例如:

(dbx) func block::block

在多个具体值中进行选择

如果可从同一作用域级别访问多个符号,则 dbx 会输出一条报告二义性的消息。

(dbx) func main
(dbx) which C::foo
More than one identifier ’foo’.
Select one of the following:
 0) Cancel
 1) ”a.out”t.cc”C::foo(int)
 2) ”a.out”t.cc”C::foo()
>1
”a.out”t.cc”C::foo(int)

which 命令的上下文中,从具体值列表中进行选择不会影响 dbx 或程序的状态。无论选择哪个具体值,dbx 都会回显名称。

打印源码列表

可使用 list 命令输出文件或函数的源码列表。在文件中导航后,list 会从第一行开始输出 number 行。在函数中导航后,list 会打印其代码行。

有关 list 命令的详细信息,请参见list 命令

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

如果存在活动进程,另一种导航到代码的方法是“在调用堆栈中移动”,即执行堆栈命令查看调用堆栈中当前存在的函数,这些函数代表当前处于活动状态的所有例程。在堆栈中移动会使当前函数和文件在您每次显示堆栈函数时发生变化。停止位置被视为位于堆栈的“底部”,因此,要离开该位置,请使用 up 命令,即向 mainbegin 函数方向移动。使用 down 命令可向当前帧方向移动。

有关在调用堆栈中移动的更多信息,请参见堆栈中移动和返回起始位置