Sun Studio 12:使用 dbx 调试程序

语法

check -access

打开访问检查。RTC 报告下列错误:

baf

错误释放

duf

重复释放

maf

未对齐释放

mar

未对齐读

maw

未对齐写

oom

内存不足

rua

从未分配的内存中读

rui

从未初始化的内存中读

wro

写入到只读内存

wua

写入到未分配内存

缺省行为是在检测到每个访问错误后停止进程,可使用 rtc_auto_continue dbx 环境变量对此进行更改。如果设置为 on,访问错误将记录到一个文件(文件名由 dbx 环境变量 rtc_error_log_file_name 控制)中。请参见dbxenv 命令

缺省情况下,每个独特访问错误只在第一次发生时进行报告。可使用 dbx 环境变量 rtc_auto_suppress(此变量的缺省设置为 on)更改此行为。请参见dbxenv 命令

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

打开泄漏检查。RTC 报告下列错误:

aib

可能的内存泄漏-指针仅指向块中央

air

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

mel

内存泄漏 - 没有指针指向块

启用了泄漏检查时,程序退出时会自动生成泄漏报告。届时将报告包括可能的泄漏在内的所有泄漏。缺省情况下,会生成简短报告(由 dbx 环境变量 rtc_mel_at_exit 控制)。但可以随时获取泄漏报告(请参见showleaks 命令)。

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

n 的缺省值为 8 或 m 的值(取较大值)。n 的最大值为 16。对于 C++,m 的缺省值为 3,其他情况下为 2。

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

-memuse 选项的行为与 -leaks 选项类似,还会启用在程序退出时生成 "blocks in use" 报告 (biu)。缺省情况下,会生成简短的使用的块报告(由 dbx 环境变量 rtc_biu_at_exit 控制)。在程序执行过程中,可以随时查看程序中内存的分配位置(请参见showmemuse 命令)。

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

n 的缺省值为 8 或 m 的值(取较大值)。n 的最大值为 16。对于 C++,m 的缺省值为 3,其他情况下为 2。另请参见 check -leaks

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

等效于 check -accesscheck -memuse [-frames n] [-match m]

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

check [functions] [files] [loadobjects]

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

其中:

functions 是一个或多个函数名。

files 是一个或多个文件名。

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

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


注 –

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