Oracle Solaris Studio 12.4 Man Pages

Exit Print View

Updated: January 2015
 
 

dbx(1)

Name

dbx - 源代码级调试工具

Synopsis

 dbx [ -a args ] [ -B ] [ -c cmd ] [ -C ] [ -d ] [ -e ] [ -f ] [ -h ] [ -Idir ] [ -k ] [ -q ] [ -Q ] [ -r ] [ -R ] [ -s startup ] [ -S ] [ -V ] [ -wcount ] [ -x exec32 ] [ execfile [ .class | .jar ] [ corefile | process-id ] ] [ arguments ] 

Description

Oracle Solaris Studio dbx 是用于对以 C++、ANSI C、Fortran 77、Fortran 95 和 Java 编程语言编写的程序执行源代码级调试和执行的实用程序。

execfile 是由 Solaris Studio 编译器使用 -g 选项生成的可执行文件,包括 execfile 或其关联对象文件中的调试符号。对于 Java 代码,它可以是 .class 或 .jar 文件。符号表包含用于创建 execfile 的所有源文件的名称(全部可以浏览)以及大量的调试信息。对于并非使用 -g 选项编译的程序部分,调试支持受限制。

最初,符号表信息零碎地存储在编译器创建的各个对象文件中。如果编译未创建对象文件,则所有调试信息都存储在 execfile 中。将调试信息分布在对象文件中可使 dbx 根据需要读取并装入调试信息,这项功能称为“自动读取”。如果需要从原始位置移动对象文件,请确保 dbx 了解在什么位置找到这些文件。(请参见 pathmap 命令。)如果保留程序 .o 文件不可行,可以禁用自动读取功能,方法是使用 -xs 选项进行编译,该选项会指示编译器让链接程序将所有调试信息放入程序可执行文件。

如果启动 dbx 时未指定 execfile,请使用 debug 命令指定要调试的程序。

如果知道 process-id 但不知道 execfile,可以使用 -(短划线)作为 execfile 并输入 process-id 选项,以将进程连接到 dbx

如果指定了 corefile 参数,生成信息转储文件时,可以使用 dbx 检查程序的状态。

只有指定了 -r 选项时,才能指定要传递给程序的 arguments。对于 Java 程序,仅指定要传递给程序的参数,而不指定要传递给 JVM[tm] 软件的参数。

启动期间,dbx 将首先在安装目录中搜索 .dbxrc。如果未找到 .dbxrcdbx 随后会搜索 ./.dbxrc(ksh 模式)。如果未找到 ./.dbxrcdbx 会输出警告消息并搜索 ~/.dbxrc(dbx 模式)。

运行时检查 (Runtime Checking, RTC) 是 dbx 的一项完全集成的功能,使用其全部功能来设置断点和检查变量。借助 RTC,可以在任何阶段检测应用程序中的运行时错误。此外,还可以监视内存使用情况。

-g 标志在错误消息中提供了源代码行号关联。RTC 可以检查使用优化 -O 标志编译的程序。无需重新编译、重新链接或修改 makefile 即可使用 RTC。

为了正确运行,RTC 需要动态链接 libc 并使用标准 libc 函数 malloc/free/realloc

要使用 RTC,请在运行程序之前在 dbx 中发出 check type-of-checking 命令。还建议使用 -C 选项启动 dbx 来执行 RTC 库的早期装入。或者,RTC 也可以在批处理模式下使用。请参见 bcheck (1)。访问检查只在 SPARC 硬件体系结构上受支持。

可用性

可用性

Solaris Studio dbx 在以下平台上可用:

  • Solaris[tm] 操作系统版本 10 10/08 和版本 11

  • Linux 操作系统:

    • Oracle Linux 5 和 6

    • RedHat Enterprise Linux 5 和 6

Options

-a args

为程序装入程序参数。参数应该跟在程序名称的后面。

-B

抑制所有消息;返回时带有正在被调试的程序的退出代码。

-c cmd

在装入程序后且在提示输入前执行 cmd。对于多个 cmd,请用引号引起命令字符串,用分号将其分隔。如果命令包含 $(美元符号),则引号将不起作用。

-C

执行 RTC 库的早期装入。(这不会启用检查。)如果启动时未使用,则执行 check 命令后,将在下次运行时装入 RTC 库。

-d

处理 startup 后将其删除。

-e

回显输入命令。

-f

强制装入信息转储文件,即使该文件不匹配。

-h

在提示输入前输出帮助。

-I dir

dir 添加到要从中搜索源文件的目录列表中。dbx 通常搜索当前的目录以及 execfile 所在的目录。可以使用 pathmap 命令重置目录搜索路径。

-k

调试用于将键盘设置为上下转换模式的程序。如果程序使用上下解码,则有必要使用该选项。

-q

静默模式或静默回显两条装入消息:"Reading symbol table for..." 和 "Attached to ..."。

-Q

执行启动、debugattach 时不装入任何符号信息。可使用 prog -readsyms 按需装入符号信息。这等效于将 dbxenv 变量 run_quick 设置为 on

-r

立即运行 execfile。参数在 execfile 名称后面(包括重定向)。如果程序成功终止,则 dbx 退出。否则,如果发生故障,dbx 将报告原因并等待响应。

-R

输出 README 文件。

-sstartup

从文件 startup 脚本读取初始化命令,而非从 .dbxrc 读取。

-S

禁止读取特定于站点的 .dbxrc

-V

输出正在使用的 dbx 的版本。

-w

计数-在 where 命令中跳过前 N 帧。

-xexec32

运行 32 位 dbx 二进制文件,而不是运行 64 位操作系统的系统上缺省情况下运行的 64 位 dbx 二进制文件。

Usage

要了解的基本命令如下:

run

运行正在调试的程序

where

获取堆栈跟踪与行号

print

显示变量

stop

设置断点

范围规则

dbx 将根据当前文件和函数的值解决范围冲突。当输入文件和函数以及它们在执行过程中退出时,这些值会进行更新。也可以使用 filefunc 命令显式更改它们。当前的函数发生更改时,当前的文件将随之更新,反之亦然。

线程标识

在某些命令中,使用 id 是指线程 ID (tid) 或轻量级进程 ID (lid)。它们采用 t@Nl@N 的形式。

处理程序标识

事件处理程序以整数 hid 进行标识(请参见 statusdeletehandler 命令)。

命令

命令

要获得所有 dbx 命令的列表,请在 dbx 命令行上键入 help commands

限制

限制

dbx 的以下功能在 Linux 平台上不可用:

  • 修复并继续功能

  • Java 调试

  • 信息转储文件调试

内存访问检查在 Linux 平台上或 Solaris OS x86 Platform Edition 上不可用。

环境

环境

dbx 可从环境变量 EDITOR 中查看要与 edit 命令一起使用的文本编辑器的名称。环境变量 TMPDIR(如果已设置)用于替换 /tmp 作为 dbx 所需临时文件的位置。还会使用若干个 ksh 环境变量。有关设置 dbx 环境变量的信息,请在 dbx 命令行上键入 "help dbxenv"。

Files

.dbxrc

本地 dbx 初始化文件

~/.dbxrc

dbx 初始化文件

libcollector.so

collector 命令一起使用的共享库

libdbx_agent.so

用于 Java 调试的共享库

librtc.so

用于 RTC 的共享库(check 命令)

libdbxadb.so

adb 命令一起使用的共享库

libdbxFintr.so

用于 Fortran 内部函数调用的共享库

debugging.so

dbx 工程师在跟踪 dbx 问题时使用的调试辅助工具

See also

bcheck(1)、csh(1)、kill(1)、ksh(1)、make(1S)、rtc_patch_area(1)、dbxrc(4)