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.  修复并继续

使用修复并继续

修复并继续如何操作

使用修复并继续修改源码

修复程序

修复文件

修复后继续

更改已执行的函数

更改一个尚未被调用的函数

更改当前正在执行的函数

更改当前位于堆栈中的函数

修复后更改变量

修改头文件

修复 C++ 模板定义

11.  调试多线程应用程序

12.  调试子进程

13.  调试 OpenMP 程序

14.  处理信号

15.  使用 dbx 调试 C++

16.  使用 dbx 调试 Fortran

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

18.  在机器指令级调试

19.  将 dbx 与 Korn Shell 配合使用

20.  调试共享库

A.  修改程序状态

B.  事件管理

C.  宏

D.  命令参考

索引

修复程序

完成更改后,可以使用 fix 命令重新链接源文件,而不必重新编译整个程序。然后即可继续执行程序。

修复文件

  1. 将所作更改保存到源文件。
  2. dbx 提示符下键入 fix

    虽然修复的次数不受限制,但如果在一行中进行了多次修复,则需要考虑重新生成程序。fix 命令会更改内存中的程序映像,但不更改磁盘上的程序映像。当您进行更多的修复时,内存映像将不再与磁盘中的映像同步。

    fix 命令不在可执行文件中进行更改,而只更改 .o 文件和内存映像。完成程序调试后,必须重新生成程序,以便将所做更改合并到可执行文件中。退出调试时,会出现一条消息,提醒您重新生成程序。

    如果调用 fix 命令时使用 -a 之外的某个选项,并且不带文件名参数,则只修复当前修改的源文件。

    调用 fix 时,会在执行编译行之前搜索编译时操作的文件的当前工作目录。由于从编译时到调试时文件系统结构发生变化,因此可能会在查找正确目录时出现问题。为了避免此问题,请使用 pathmap 命令创建从一个路径名到另一个路径名的映射。映射是应用于源文件路径和目标文件路径。

修复后继续

可以使用 cont 命令继续执行(请参见cont 命令)。

在恢复程序执行之前,需要注意下列决定更改效果的条件。

更改已执行的函数

如果在已执行的函数中进行了更改,这些更改要在出现以下情况后才会生效:

如果不只是对变量进行简单更改,应先使用 fix 命令,然后使用 run 命令。使用 run 命令比较快,因为它不会重新链接程序。

更改一个尚未被调用的函数

如果在尚未调用的函数中进行了更改,这些更改将在调用该函数时生效。

更改当前正在执行的函数

如果对当前正在执行的函数进行了更改,fix 命令的作用取决于更改相对于停止于函数的位置:

更改当前位于堆栈中的函数

如果已经对当前位于堆栈中的函数而不是停止于函数进行了更改,当前的函数调用不会使用已更改的代码。当停止于函数返回时,会执行堆栈中的旧版本函数。

下列几种方法可以解决此问题:

如果堆栈中已修改的函数内存在断点,则会将断点移动到函数的新版本中。如果执行了旧版本,则程序不会在这些函数中停止。