Oracle® Developer Studio 12.5:使用 dbx 调试程序

退出打印视图

更新时间: 2016 年 6 月
 
 

check 命令

check 命令用于启用检查内存访问、泄漏或使用,并输出运行时检查 (runtime checking, RTC) 的当前状态。仅在本地模式中有效。

由此命令启用的运行时检查功能可由 debug 命令重置为其初始状态。

语法

本节提供有关 check 命令选项的信息。

check [functions] [files] [loadobjects]

等效于 functionsfilesloadobjects 中的 check –all、suppress all 或 unsuppress all

其中:

functions 是一个或多个函数名。

files 是一个或多个文件名。

loadobjects 是一个或多个装入对象名。

您可使用此命令将运行时检查用于需要的地方。


注 -  为了检测所有错误,RTC 不要求使用 –g 编译程序。但是,有时为了保证准确检测某些错误(通常是从未初始化的内存中读取),需要使用符号 (–g) 信息。为此,如果没有符号信息,会禁止某些错误(a.outrui,以及共享库的 rui + aib + air)。可通过使用 suppressunsuppress 更改此行为。

–access 选项

–access 选项启用检查。RTC 报告下列错误:

baf

错误释放

duf

重复释放

maf

未对齐释放

mar

未对齐读

maw

未对齐写

oom

内存不足

rob

从数组越界内存中读

rua

从未分配的内存中读

rui

从未初始化的内存中读

wob

写入到数组越界内存

wro

写入到只读内存

wua

写入到未分配内存

缺省行为是在检测到每个访问错误之后停止进程,可以使用 rtc_auto_continue dbxenv 变量更改此行为。如果设置为 on,则访问错误将记录到文件。日志文件名由 dbxenv 变量 rtc_error_log_file_name 控制。

缺省情况下,每个独特访问错误只在第一次 发生时进行报告。可以使用 dbxenv 变量 rtc_auto_suppress 更改此行为。此变量的缺省设置为 on

–leaks 选项

–leaks 选项的语法如下:

check –leaks [–frames n] [–match m]

启用泄漏检查。RTC 报告下列错误:

aib

可能发生内存泄漏-唯一指针指向块中间位置

air

可能发生内存泄漏-指向块的指针仅存在于寄存器中

mel

内存泄漏-无指向块的指针

启用泄漏检查之后,将在程序退出时自动生成泄漏报告。届时将报告包括可能的泄漏在内的所有泄漏。缺省情况下,会生成非详细报告,可以通过 dbxenv 变量 rtc_mel_at_exit 更改此行为。但可以随时获取泄漏报告(请参见showleaks 命令)。

–frames n 表示在报告泄漏时最多显示 n 个不同的堆栈帧。–match m 用于组合泄漏;如果两个或更多泄漏分配时的调用堆栈与 n 帧匹配,则在一个合并泄漏报告中报告这些泄漏。

n 的缺省值为 8 或 m 的值(取较大值)。n 的最大值是 16。m 的缺省值是 8。

–memuse 选项

–memuse 选项的语法为:

check –memuse [–frames n] [–match m]

–memuse 选项与 –leaks 选项的作用类似,同时还可在程序退出时启用使用的块报告 (biu)。缺省情况下,会生成非详细的使用的块报告,可以通过 dbxenv 变量 rtc_biu_at_exit 更改此行为。在程序执行期间,您随时可以查看程序中已分配的内存位置(请参见showmemuse 命令)。

–frames n 表示报告内存使用和泄漏时最多显示 n 个不同的堆栈帧。使用 –match m 可组合这些报告。如果两个或更多泄漏分配时的调用堆栈与 m 帧匹配,则在一个合并的内存泄漏报告中报告这些泄漏。

n 的缺省值为 8 或 m 的值,以较大者为准。n 的最大值为 16。m 的缺省值是 8。

–all 选项

–all 选项的语法为:

check –all [–frames n] [–match m]

等效于:

check –accesscheck –memuse [–frames n] [–match m]

dbxenv 变量 rtc_biu_at_exit 的值不随 check –all 变化,因此在缺省情况下,退出时不生成内存使用报告。有关 rtc_biu_at_exit 环境变量的说明,请参见dbx 命令