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

使用 dbx 初始化文件

创建 .dbxrc 文件

初始化文件示例

设置 dbx 环境变量

dbx 环境变量和 Korn Shell

4.  查看和导航到代码

5.  控制程序执行

6.  设置断点和跟踪

7.  使用调用堆栈

8.  求值和显示数据

9.  使用运行时检查

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

索引

设置 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

c_array_op on | off
允许在 C 和 C++ 中进行数组操作。例如,如果 ab 是数组,则可以使用 print a+b 命令。缺省值: 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 平台:设置适用于 x86_32 或 x86_64 的 dbx 的内置反汇编程序版本。缺省值是 autodetect,它根据运行 a.out 的机器的类型动态地设置模式。

event_safety on | off
保护 dbx 使其免受不安全的事件使用的影响。缺省值: on
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 环境变量可以定制 JVM 软件的启动方式。(术语“Java 虚拟机”和 "JVM" 表示用于 Java 平台的虚拟机。)有关更多信息,请参见定制 JVM 软件的启动
language_mode autodetect|main|c| c++|fortran|fortran90
控制用于分析和计算表达式的语言。
  • autodetect 将表达式语言设置为当前文件的语言。用于调试使用混合语言的程序(缺省)。

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

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

macro_expand on | off
设置为 on 时,为选定表达式全局启用宏扩展。缺省值: on
macro_source none | compiler | skim | skim_unless_compiler
管理 dbx 获得宏信息的位置。有关该环境变量的更多信息,请参见略读 (skimming) 错误。缺省值:skim_unless_compiler
mt_resume_one on | off | auto
如果设为 off,当使用 next 命令步过调用时将恢复所有线程以避免死锁。如果设为 on,当使用 next 命令步过调用时仅恢复当前线程。如果设为 auto,则与设为 off 时的行为相同,除非程序是一个事务管理应用程序并且您正在事务内执行单步操作,在这种情况下,仅恢复当前线程。缺省值: off
mt_scalable on|off
如果启用,dbx 在其资源使用方面更为保守,将能够使用 300 个以上的 LWP 调试进程。下方速度将明显减慢。缺省值: off
mt_sync_tracing on | off
确定在 dbx 启动进程时是否启用对同步对象的跟踪。缺省值: on
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 on|off
如果启用,则当表达式是字符串 (char *) 时,仅输出地址,而不输出文字。缺省值: off
output_pretty_print on|off
-p 设置为输出监视和显示的缺省值。缺省值: off
output_pretty_print_fallback on|off
缺省情况下,出现问题时,美化输出会恢复为常规输出。如果希望诊断美化输出问题,请将此变量设置为 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
要报告的 RTC 访问错误数 (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 附加到了被调试的程序,或正在 Oracle Solaris 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 记录所有命令及其输出的文件名。输出将被附加至文件。缺省值:" "(无会话记录)。
show_static_members
如果设置为 on,则用于输出、监视和显示的缺省值是 -S。缺省值: on
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。

vdl_mode classic | lisp | xml
值描述语言 (Value Description Language, VDL) 用于将数据结构传达给 dbx 的图形用户界面 (graphical user interface, GUI)。classic 模式用于 Sun WorkShop IDE。Sun Studio 和 Oracle Solaris Studio 发行版中的 IDE 使用 lisp 模式。xml 模式是实验性模式,不受支持。缺省值:值通过 GUI 设置。