Sun Studio 12:使用 dbx 调试程序

设置 dbx 环境变量

可使用 dbxenv 命令设置用于定制 dbx 会话的 dbx 环境变量。

要显示特定变量的值,请键入:


(dbx) dbxenv variable

要显示全部变量和变量值,键入:


(dbx) dbxenv

要设置变量值,键入:


(dbx) dbxenv variable value

表 3–1 列出了您可以设置的所有 dbx 环境变量:

表 3–1 dbx 环境变量

dbx 环境变量

变量功能说明 

array_bounds_check on|off

如果设置为 ondbx 将检查数组边界。

缺省值:on

CLASSPATHX

用于为 dbx 指定由定制类加载器加载的 Java 类文件的路径。

core_lo_pathmap on|off

控制 dbx 是否使用 pathmap 设置来定位“不匹配的”核心转储文件的正确库。缺省值:off

debug_file_directory

设置全局调试文件目录。缺省值:/usr/lib/debug

disassembler_version autodetect|v8|v9|x86_32|x86-64

SPARC 平台:设置适用于 SPARC V8 或 V9 的 dbx 的内置反汇编程序版本。缺省值是 autodetect,它根据运行 a.out 的机器的类型动态地设置模式。

x86 平台:有效选项为 autodetect

event_safety

保护 dbx 使其免受不安全的事件使用的影响。

fix_verbose on|off

控制 fix 运行期间的编译行打印。缺省值:off

follow_fork_inherit on|off

当跟随子进程时,继承或不继承断点。缺省值:off

follow_fork_mode parent|child|both|ask

确定派生之后应跟随哪个进程;即,当前进程何时执行 forkvforkfork1。如果设置为 parent,则进程跟随父进程。如果设置为 child,则跟随子进程。如果设置为 both,则进程跟随子进程,但父进程保持活动状态。如果设置为 ask,则在检测到派生时询问应跟随哪个进程。缺省值:parent

follow_fork_mode_inner unset|

parent|child|both

如果将 follow_fork_mode 设置为 ask,则在检测到派生后选择 stop 时适用。设置此变量后,无需使用 cont -follow

input_case_sensitive autodetect|

true|false

如果设置为 autodetectdbx 将根据文件的语言自动选择区分大小写:对于 Fortran 文件,为 false;否则为 true。如果为 true,变量和函数名区分大小写;否则大小写无实际意义。

缺省值:autodetect

JAVASRCPATH

指定 dbx 查找 Java 源文件的目录。

jdbx_mode java| jni| native

存储当前 dbx 模式。它可具有下列设置:javajninative

jvm_invocation

通过 jvm_invocation 环境变量可以定制 JVMTM 软件的启动方式。 (术语“Java 虚拟机”和 "JVM" 表示用于 JavaTM 平台的虚拟机。)有关更多信息,请参见定制 JVM 软件的启动

language_mode autodetect|main|c| c++|fortran|fortran90

控制用于分析和计算表达式的语言。 

  • autodetect 将表达式语言设置为当前文件的语言。用于调试使用混合语言的程序(缺省)。

  • main 将表达式语言设置为程序中主例程的语言。用于调试同类程序。

  • cc++fortranfortran90 将表达式语言设置为选定语言。

mt_scalable on|off

如果启用,dbx 在其资源使用方面更为保守,将能够使用 300 个以上的 LWP 调试进程。下方速度将明显减慢。缺省值:off

optim_local_vars on|off

如果启用,可以对优化函数中的局部变量求值。缺省值:off

output_auto_flush on|off

每次调用后,自动调用 fflush()。缺省值:on

output_base 8|10|16|automatic

打印整型常量的缺省基数。缺省值:automatic(指针是十六进制字符,而其他都是十进制)。

output_class_prefix on | off

用于在打印类成员的值和声明时将类名作为类成员的前缀。如果设置为 on,则为类成员添加前缀。缺省值:on

output_dynamic_type on|off

如果设置为 on,则打印监视和显示的缺省值是 -d。缺省值:off

output_inherited_members on|off

如果设置为 on,则打印、显示和检查的缺省值是 -r。缺省值:off

output_list_size num

控制 list 命令所打印的缺省行数。缺省值:10。

output_log_file_name filename

命令日志文件的名称。 

缺省值:/tmp/dbx.log.uniqueID

output_max_string_length number

char *s 设置打印的字符数 (number)。缺省值:512。

output_no_literal

如果启用,则当表达式是字符串 (char *) 时,仅打印地址,而不打印文字。缺省值:off

output_pretty_print on|off

-p 设置为打印监视和显示的缺省值。缺省值:off

output_pretty_print_fallback

缺省情况下,出现问题时,美化打印会恢复为常规打印。如果希望诊断美化打印问题,请将此变量设置为 off 以防止出现这种回退。缺省值:on

output_short_file_name on|off

显示文件的短路径名。缺省值:on

overload_function on|off

对于 C++,如果设置为 on,则启用自动函数重载解析。缺省值:on

overload_operator on|off

对于 C++,如果设置为 on,则启用自动运算符重载解析。缺省值:on

pop_auto_destruct on|off

如果设置为 on,则当弹出帧时会自动为局部变量调用适当的析构函数。缺省值:on

proc_exclusive_attach on|off

如果设置为 on,且已连接其他工具,将阻止 dbx 连接到进程。警告:请注意,如果多个工具连接到一个进程并试图对其进行控制,则会出现混乱。缺省值:on

rtc_auto_continue on|off

将错误记录到 rtc_error_log_file_name 并继续。缺省值:off

rtc_auto_suppress on|off

如果设置为 on,则只报告一次指定位置的 RTC 错误。缺省值:off

rtc_biu_at_exit on|off|verbose

在显式或通过 check -all 打开内存使用检查时使用。如果值为 on,则在程序退出时生成一个非详细的内存使用(使用的块)报告。如果值为 verbose,则在程序退出时生成一个详细的内存使用报告。值为 off 时将不产生任何输出。缺省值:on

rtc_error_limit number

要报告的 RCR 错误数 (Number)。缺省值:1000。

rtc_error_log_file_name filename

记录 RTC 错误的文件名(如果设置了 rtc_auto_continue)。缺省值:

/tmp/dbx.errlog.uniqueID

rtc_error_stack on|off

如果设置为 on,栈跟踪将显示与 RTC 内部机制相对应的帧。缺省值:off

rtc_inherit on|off

如果设置为 on,则对从调试程序执行的子进程启用运行时检查,并导致 LD_PRELOAD 环境变量被继承。缺省值:off

rtc_mel_at_exit on|off|verbose

在内存泄露检查为 on 时使用。如果值为 on,则在程序退出时生成一个非详细的内存泄露报告。如果值为 verbose,则在程序退出时生成一个详细的内存泄漏报告。值为 off 时将不产生任何输出。缺省值:on

run_autostart on|off

如果在没有活动程序时设置为 on,则 stepnextstepinexti 将隐式运行程序,并在语言相关的 main 例程处停止。如果设置为 on,则必要时 cont 表示 run

缺省值:off

run_io stdio|pty

控制是否将用户程序的输入/输出重定向至 dbxstdio 或特定 pty。pty 由 run_pty 提供。缺省值:stdio

run_p ty ptyname

run_io 设置为 pty 时,设置要使用的 pty 的名称。Pty 供图形用户界面包装器使用。

run_quick on|off

如果设置为 on,则不会装入任何符号信息。可使用 prog -readsysms 按需装入符号信息。在此之前,dbx 的行为如同所调试的程序被剥离。缺省值:off

run_savetty on | off

dbx 与被调试程序之间的多路复用 tty 设置、进程组和键盘设置(如果在命令行中使用了 -kbd)。用于调试编辑器和 shell。如果 dbx 获取了 SIGTTINSIGTTOU,并弹回到 shell,则将此变量设置为 on。将此变量设置为 off,可稍稍加快速度。如果 dbx 连接到被调试程序,或正在 Sun Studio IDE 中运行,则该设置是不相关的。缺省值:off

run_setpgrp on | off

如果设置为 on,当程序运行时,setpgrp(2) 将在派生后立即被调用。缺省值:off

scope_global_enums on | off

如果设置为 on,枚举器将被置于全局范围,而不是文件范围。请在处理调试信息 (~/ .dbxrc) 之前设置它。缺省值:off

scope_look_aside on | off

如果设置为 on,则在当前范围之外查找文件静态符号。缺省值:on

session_log_file_name filename

dbx 记录所有命令及其输出的文件名。输出将被附加至文件。缺省值:""(无会话记录)。

stack_find_source on | off

如果设置为 on,当被调试程序在未使用 -g 编译的函数中停止时,dbx 将尝试查找并自动激活栈的第一帧。

缺省值:on

stack_max_size number

设置 where 命令的缺省大小。缺省值:100。

stack_verbose on | off

控制 where 中参数和行信息的打印。缺省值:on

step_abflow stop|ignore

如果设置为 stop,则在单步执行时,dbx 会在 longjmp()siglongjmp() 和 throw 语句中停止。如果设置为 ignore,则 dbx 不检测 longjmp()siglongjmp() 的异常控制流更改。

step_events on |off

如果设置为 on,则在使用 stepnext 命令单步执行代码时允许断点。缺省值:off

step_granularity statement | line

控制源代码行单步执行的粒度。如果设置为 statement,则以下代码:

a(); b();

执行两个 next 命令。如果设置为 line,将由一个 next 命令执行代码。在处理多行宏时,行的粒度是非常有用的。缺省值:statement

suppress_startup_message number

设置版本级别,级别以下的启动信息不打印。缺省值:3.01。 

symbol_info_compression on|off

如果设置为 on,则对于每个 include 文件,只读取一次调试信息。缺省值:on

trace_speed number

设置跟踪执行的速度。其值是步骤之间暂停的秒数。 

缺省值:0.50。