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.  使用运行时检查

运行时检查功能

何时使用运行时检查

运行时检查要求

使用运行时检查

启用内存使用和内存泄漏检查

启用内存访问检查

启用所有运行时检查

关闭运行时检查

运行程序

使用访问检查

理解内存访问错误报告

内存访问错误

使用内存泄漏检查

检测内存泄漏错误

可能的泄漏

检查泄漏

理解内存泄漏报告

生成泄漏报告

合并泄漏

修复内存泄漏

利用内存使用检查

抑制错误

抑制的类型

按作用域和类型抑制

抑制上一错误

限制报告的错误数

抑制错误示例

缺省抑制

使用抑制来管理错误

对子进程使用运行时检查

对连接的进程使用运行时检查

在运行 Solaris 的系统中

在运行 Linux 的系统中

结合使用修复并继续功能与运行时检查

运行时检查应用编程接口

在批处理模式下使用运行时检查

bcheck 语法

bcheck 示例

直接在 dbx 中启用批处理模式

疑难解答提示

运行时检查限制

具有更多符号和调试信息时工作效果会更好

SIGSEGVSIGALTSTACK 信号在 x86 平台上受限制

当 8 MB 的所有现有代码中具有足够的补丁区域时工作效果会更好(仅限 SPARC 平台)。

运行时检查错误

访问错误

错误释放 (baf) 错误

重复释放 (duf) 错误

未对齐释放 (maf) 错误

未对齐读 (mar) 错误

未对齐写 (maw) 错误

内存不足 (oom) 错误

从数组越界中读 (rob) 错误

从未分配的内存中读 (rua) 错误

从未初始化的内存中读 (rui) 错误

写入到数组越界内存 (wob) 错误

写入到只读内存 (wro) 错误

写入到未分配内存 (wua) 错误

内存泄漏错误

地址位于块内 (aib) 错误

地址位于寄存器内 (air) 错误

内存泄漏 (mel) 错误

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

索引

在批处理模式下使用运行时检查

bcheck 实用程序是 dbx 的运行时检查的方便的批处理接口。它在 dbx 下运行程序,并且在缺省情况下,将运行时检查错误输出放在缺省文件 program.errs 中。

bcheck 实用程序可以分别或一起执行内存泄漏检查、内存访问检查和内存使用检查。其缺省操作是只执行泄漏检查。有关其使用的更多详细信息,请参见 bcheck(1) 手册页。


注 - 在运行 64 位 Linux 操作系统的系统上运行 bcheck 实用程序之前,必须设置 _DBX_EXEC_32 环境变量。


bcheck 语法

bcheck 的语法如下:

bcheck [-V] [-access | -all | -leaks | -memuse] [-xexec32] [-o logfile] [-q]
[-s script] program [args]

-o logfile 选项用于为日志文件指定另一个名称。-s script 选项在执行程序前使用,用于在 script 文件中包含的 dbx 命令中进行读取。script 文件通常包含 suppressdbxenv 等这类命令,用于调整 bcheck 实用程序的错误输出。

-q 选项可使 bcheck 实用程序处于完全静默状态,返回时的状态与程序相同。要在脚本或 makefiles 中使用 bcheck 实用程序时,此选项很有用。

bcheck 示例

要对 hello 仅执行泄漏检查,请键入:

bcheck hello

要使用参数 5mach 仅执行访问检查,请键入:

bcheck -access mach 5

要以静默方式对 cc 执行内存使用检查,并以正常退出状态退出,请键入:

bcheck -memuse -q cc -c prog.c

在批处理模式下检测到运行时错误时,程序不会停止。所有错误输出都会重定向到错误日志文件 logfile 中。遇到断点或程序被中断时,程序会停止。

在批处理模式下,会生成完整的堆栈回溯,且其会重定向到错误日志文件。可使用 dbx 环境变量 stack_max_size 控制堆栈帧数。

如果文件 logfile 已存在,则 bcheck 会清除该文件的内容,然后将批处理输出重定向到该文件。

直接在 dbx 中启用批处理模式

也可以通过设置 dbx 环境变量 rtc_auto_continuertc_error_log_file_name 直接在 dbx 中启用类似于批处理的模式(请参见设置 dbx 环境变量)。

如果 rtc_auto_continue 设置为 on,则运行时检查会继续查找错误,并自动保持运行。它将错误重定向至 dbx 环境变量 rtc_error_log_file_name 命名的文件。(请参见设置 dbx 环境变量。)缺省的日志文件名为 /tmp/dbx.errlog.uniqueid。要将所有错误都重定向到终端,请将 rtc_error_log_file_name 环境变量设置为 /dev/tty

缺省情况下,rtc_auto_continue 设置为 off。