定制 dbx 调试环境

可通过创建子命令别名并在 .dbxinit 文件中指定选项定制调试环境。 可使用 -c 标记从文件读取 dbx 子命令。

以下部分包含有关定制选项的更多信息:

定义新的 dbx 提示符

dbx 提示符通常为用于启动 dbx 程序的名称。 如果指定了/usr/ucb/dbx a.out在命令行上,那么提示符为/usr/ucb/dbx.

可以使用 prompt 子命令或通过在 .dbxinit 文件的 prompt 行中指定另一个提示来更改提示。 在 .dbxinit 文件中更改提示符将导致在每次初始化 dbx 程序时使用该提示符而不是缺省值。

例如,要使用调试提示来初始化 dbx 程序debug—>,在 .dbxinit 文件中输入以下行:

prompt "debug-->"

创建 dbx 子命令别名

可从 dbx 原语子命令集构建您自己的命令。 以下命令允许您从指定参数构建用户别名。 别名的代替字符串中的所有命令必须是 dbx 原语子命令。 然后可使用别名代替 dbx 原语。

不带自变量的 alias 子命令将显示有效的当前别名; 使用一个自变量,命令将显示与该别名关联的替换字符串。

别名[别名名称[ CommandName] ]

AliasName "CommandString"

别称 AliasName (Parameter1, Parameter2, . . . ) "CommandString"

alias 子命令的前两种格式用于在每次使用该命令时替换 alias 的代替字符串。 别名判别的第三种格式为受限的宏工具。 在 alias 子命令中指定的每个参数在代替字符串中都被替换了。

以下别名和相关子命令名称为缺省值:

attr
指标
bfth
stop(在指定函数的给定线程中)
blth
stop(在指定源行的给定线程中)
c
cont
cv
condition
d
删除
e
编辑 (edit)
h
帮助
j
状态
l
列表
m
map
mu
mutex
n
下一步
p
PRINT
q
退出
r
运行
s
步进
st
停止
t
WHERE
th
线程
x
寄存器

您可以使用 unalias 命令除去别名。

使用 .dbxinit 文件

每次开始调试会话时,dbx 程序都搜索名为 .dbxinit 的特殊初始化文件,该文件包含要执行的 dbx 子命令的列表。 这些子命令是在 dbx 程序开始从标准输入读取子命令前被执行的。 启动 dbx 命令时,它检查用户当前目录和用户 $HOME 目录中的 .dbxinit 文件。 如果 .dbxinit 文件存在,那么其子命令在调试会话开始时运行。 如果主目录和当前目录中都有 .dbxinit 文件,那么都以该顺序加以读取。 由于当前目录 .dbxinit 文件是最后读取的,其子命令可取代主目录中的那些文件。

通常, .dbxinit 文件包含 alias 子命令,但可以包含任何有效的 dbx 子命令。 例如:

$ cat .dbxinit
alias si "stop in"
prompt "dbg-->"
$ dbx a.out
dbx version 3.1
Type 'help' for help.
reading symbolic information . . . 
dbg--> alias
si   stop in
t    where . . . 
dbg-->

从文件读取 dbx 子命令

-c 调用选项和 .dbxinit 文件在从标准输入读取前提供执行 dbx 子命令的机制。 指定 -c 选项时,dbx 程序不搜索 .dbxinit 文件。 一旦调试会话开始,使用 source 子命令从文件中读取 dbx 子命令。

执行完 cmdfile 文件中的命令列表后,dbx 程序显示提示符并等待输入。

还可使用 -c 选项在初始启动 dbx 程序时指定将要执行的子命令列表。

调试 spinlock

您可以使用 dbx 程序来调试自旋锁。 要进行此项操作,请将 AIXTHREAD_SPINLOCKS 环境变量设为 ON。