Oracle Solaris Studio 12.2:使用 dbx 调试程序

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

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。