定制 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
- 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。