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.  设置断点和跟踪

设置断点

在源代码行设置 stop 断点

在函数中设置 stop 断点

在 C++ 程序中设置多个断点

在不同类的成员函数中设置断点

在类的所有成员函数中设置断点

在非成员函数中设置多个断点

在对象中设置断点

设置数据更改断点

访问地址时停止执行

变量更改时停止执行

条件停止执行

在断点上设置过滤器

将函数调用的返回值用作过滤器

在局部变量上设置数据更改断点

将过滤器与条件事件配合使用

跟踪执行

设置跟踪

控制跟踪速度

将跟踪输出定向到文件

在行中设置 when 断点

在动态装入的库中设置断点

列出和清除断点

列出断点和跟踪

使用处理程序 ID 号删除特定断点

启用和禁用断点

效率方面的考虑

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

索引

效率方面的考虑

在所调试程序的执行时间方面,各种事件都有不同程度的开销。但某些事件(如最简单的断点)几乎没有开销。基于单个断点的事件的开销非常小。

多种可能会导致生成数百个断点的断点(如 inclass)仅在创建期间有开销。这是因为 dbx 使用永久性断点,这些断点一直保留在进程中,每次中断时并不会被移除,且每次执行 cont 命令时都会被置入。


注 - stepnext 而言,缺省情况下,恢复进程前会移除所有断点,完成相应步骤后会立即重新插入这些断点。如果使用大量断点或在多产类中使用多个断点,step 命令和 next 命令的执行速度会显著降低。可使用 dbx step_events 环境变量控制是否移除断点并在每次执行 step 命令或 next 命令后重新插入断点。


速度最慢的事件是利用自动单步执行功能的事件。在单步执行每个源代码行的 trace step 命令中,这可能非常明显。其他一些事件(如 stop change expressiontrace cond variable)不仅自动单步执行,而且还必须在执行每一步时对表达式或变量求值。

这些事件的速度非常慢,但通常可以使用 -in 修饰符将事件与函数绑定来克服速度慢这一问题。例如:

trace next -in mumble
stop change clobbered_variable -in lookup

请勿使用 trace -in main,这是因为 tracemain 调用的函数中也有效。而是在怀疑 lookup() 函数破坏变量的情况下使用它。