dbx 命令命令详解[2]
goto 子命令
goto SourceLine
goto 子命令使源行成为下一个要运行的行。通常指定的源行必须与当前行在同一函数中。要重设该约束,使用 set 子命令并带有 $unsafegoto 标志。
例子
要使下一个执行的行为第六行,请输入:
goto 6参见 cont 子命令、gotoi 子命令、 以及set 子命令。
gotoi 子命令
gotoi Address
gotoi 子命令修改程序计数器地址为 Address 参数指定的地址。
例子
要修改程序计数器地址为 0x100002b4,请输入:
gotoi 0x100002b4参见 goto 子命令。
help 子命令
help [ Subcommand | Topic ]
根据您指定的参数 help 子命令显示 dbx 子命令或主题的帮助信息。输入 help 子命令并带有 Subcommand 参数显示语法语句和指定子命令的描述。输入 help 子命令并带有 Topic 参数显示指定主题的详细描述。以下是可用的主题:
startup 列出 dbx 启动选项列表。
execution 列出和程序执行相关的 dbx 子命令。
breakpoints 列出和断点和跟踪相关的 dbx 子命令。
files 列出用于访问源文件的 dbx 子命令。
data 列出用于访问程序变量和数据的 dbx 子命令。
machine 列出用于机器级别的调试的 dbx 子命令描述。
environment 列出用于 dbx 的配置和环境设置的 dbx 子命令。
threads 列出 dbx 子命令获得线程相关的对象。
expressions 描述 dbx 表达式语法和运算符。
scope 描述 dbx 如何解析不用作用域的名称。
set_variables 列出 dbx 带有用法说明的调试变量。
usage 列出带有简单描述的 dbx 公共子命令。
示例
要列出所有可用的dbx 子命令和主题,请输入:
帮助要显示dbx 子命令 list的描述,请输入:
help list要显示 dbx 命令的主题 set_variables 的描述,请输入:
help set_variablesignore 子命令
ignore [ SignalNumber | SignalName ]
ignore 子命令在信号送到应用程序之前停止指定信号的捕捉。该子命令在调试应用程序处理例如中断之类的信号时非常有用。
要捕捉的信号可以通过以下任意一项指定:
SignalNumber 参数指定信号数
SignalName 参数指定信号名称
信号名是不区分大小写的。前缀 SIG 是可选的。
如果既没有指定SignalNumber 也没有指定 SignalName 参数,按缺省将捕捉除了 SIGHUP、SIGCLD、SIGALRM 以及 SIGKILL 以外的所有信号。如果 SIGTRAP 信号来自调试器以外的进程,dbx 调试程序无法忽略该信号。如果没有指定参数,将会显示当前所有被忽略的信号的列表。
例子
要使 dbx 忽略发送到应用程序的警报时钟超时信号,请输入:
ignore alrm参见 catch 子命令。另见 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Handling Signals。
list 子命令
list [ Procedure | SourceLine-Expression [ ,SourceLine-Expression ] ]
list 子命令显示指定数目的源文件的行。行数由以下两种方法中的一种来指定:
通过使用 Procedure 参数指定一个过程。
在这种情况下,list 子命令显示从指定过程开始前的几行开始直到列表窗口已满。
通过使用SourceLine-Expression参数指定源文件开始和结束行。
SourceLine-Expression 参数由一个有效的行号,加上可选的 +(加号)或 -(减号),以及一个整数组成。另外,SourceLine $(美元符号)可以用来表示当前行号;SourceLine @ (at 符号) 可以用来表示要列出的下一行的行号。
所有在第一个指定的行号和第二个指定的行号之间(包括这两行)的行都将被显示出来。
如果没指定第二个源行,则只打印第一行。
如果 list 子命令没有指定参数,则将从当前源文件的行开始,打印 $listwindow 所指定的行数。
要修改列表行数的默认值,可以设置特定的调试程序变量,$listwindow,为您想要的行数。$listwindow 的初始值为 10。
示例
要列出当前文件中第 1 到第 10 行,请输入:
list 1,10要列出 10 行,或者 $listwindow 行的 main 程序,请输入:
list main要以当前行为中间行,列出前后共 11 行,请输入:
list $-5,$+5您可以在 SourceLineExpression 表达式中使用包括加法和减法在内的简单整数表达式。例如:
(dbx) list $
4 {
(dbx) list 5
5 char i = '4';
(dbx) list sub
23 char *sub(s,a,k)
24 int a;
25 enum status k; . . .
(dbx) move
25
(dbx) list @ -2
23 char *sub(s,a,k)参见 edit 子命令、listi 子命令以及move 子命令。另见 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Displaying the Current File。
listi 子命令
listi [ Procedure | at SourceLine | Address [ , Address ] ]
listi 子命令显示源文件指定的指令集合。显示的指令可以通过下列方法指定:
提供 Procedure 参数,其中 listi 子命令将从指定过程开始列出指令列表,直到列表窗口填满为止。
使用at SourceLine 标志,其中 listi 从指定行开始显示指令列表,直到列表窗口被填满为止。SourceLine 变量可以通过一个整数或者一个文件名字符串后跟 :(冒号)和一个整数的方法指定。
通过 Address 参数来指定开始和结束的地址,则两个地址之间(包括这两个地址)所有的指令都将被显示出来。
如果 listi 子命令没有使用标志或参数,则显示下一个 $listwindow 指令。要修改当前列表窗口的大小,可以使用 set $listwindow=Value 子命令。
反汇编方式
dbx 程序可以反汇编 POWER 系列 系列或者 POWER PC 体系结构指令。在默认模式下,dbx 程序显示正在运行的结构的指令。
dbx 命令中的 set 子命令的 $instructionset 以及 $mnemonics 变量在允许您覆盖默认的反汇编方式。要获得更多的信息,请参见dbx 命令中的 set 子命令。
标志
SourceLine 指定了列表的开始命令行。
示例
要列出下 10 条或者 $listwindow 条指令,请输入:
listi要列出第 10 行的机器指令,请输入
listi at 10要列出 sample.c 文件中源代码第 5 行的机器指令,请输入:
listi at "sample.c":5要列出地址位于 0x10000400 和 0x10000420之间的指令,请输入:
listi 0x10000400, 0x10000420参见 list 子命令以及 set 子命令。另见 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Debuggingat the Machine Level with dbx。
map 子命令
map [ > File ]
map 子命令显示应用程序中每个装入部分的特征。该信息包括导入的每个装入块的名称、文本来源、文本长度、数据来源以及数据长度。
标志
>File 重定向输出到指定的文件。
请参阅 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Debugging at the Machine Level with dbx。
move 子命令
move SourceLine
move 子命令将下一个显示行更换为由 SourceLine 参数指定的行。该子命令修改 @ (at 符号) 变量的值。
SourceLine 变量可以通过一个整数或者在代表文件名的字符串后跟 :(冒号)和一个整数的方法指定。
示例
要想将下一行修改为第 12 行,请输入:
move 12要将下一行修改为文件 sample.c 的第 5 行,请输入:
move "sample.c":5参见 list 子命令。另见 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Displaying the Current File。
multproc 子命令
multproc [ on | parent | child | off ]
multproc 子命令指定 dbx 调试程序在创建派生或者越权进程时的行为。on 标志用来指定一个新的 dbx 会话将会被创建以调试派生进程的子路径。原先的dbx 将会继续调试原来的父路径。parent 以及 child 标志用来指定派生进程的单独路径。除了off 的所有标志都能使 dbx 跟随越权进程。off 标志禁用多进程调试。如果没有指定标志,multproc 子命令返回当前调试的多进程的状态。
dbx 程序使用 Xwindows 来进行多进程调试。dbx 程序将会打开足够多的窗口供多进程调试使用。每个子窗口的标题为子进程 ID(pid)。要在进程之间切换,使用 Xwindows 处理技术来激活 dbx 会话显示的窗口。如果系统不支持 Xwindows,在调试派生进程时将会出现一个警告信息而 dbx 程序继续仅调试父进程。多进程调试也可能因如下原因失败:
dbx 程序没有运行在 Xwindows 环境下。
Xwindows 已经运行但是dbx 通用 $xdisplay 变量没有设置一个有效的显示名。$xdisplay 变量被初始化成 shell 的 DISPLAY 环境变量。set 名称 =表达式 dbx 子命令可以用来修改显示名称的值。
/tmp 目录不允许对调试程序进行读写访问。dbx 程序要求在该目录中有小量空间控制 Xwindow 环境。
该系统没有足够的资源满足一个新的 Xwindow 窗口。
$xdisplay 设置成远程显示,用户可能看不见新创建的 Xwindow。如果$xdisplay 设置不正确,Xwindows 或者其他的系统资源将会报告发生错误的原因。
dbx 程序不能区分不同类型错误的区别,但是将会在子命令失败时发送如下的信息:
Warning: dbx subcommand multiproc fails. dbx
continued with multproc disabled.新创建窗口的用户定义的配置可以在 .Xdefaults 文件中由 dbx_term 应用程序名定义。
标志
on 启用多进程调试。
off 禁用多进程调试。
示例
要检查当前多进程的调试状态,请输入:
multproc要启用多进程调试,请输入:
multproc on要禁用多进程调试,请输入:
multproc off 参见screen 子命令以及 fork 子例程。另见 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Debugging Programs Involving Multiple Processes。
mutex 子命令
mutex [ lock | unlock | thnum | utid | MutexNumber ... ]
mutex 子命令显示关于互斥的信息。如果给定 MutexNumber参数mutex 子命令将显示指定互斥的信息。如果没有指定标志或者参数,mutex 子命令将会显示所有的互斥信息。
每个互斥信息列出如下:
mutex 指定互斥的符号名,遵循 $mMutexNumber 格式。
type 指出互斥类型:non-rec(非递归),recursi(递归)或者 fast(快速)。
obj_addr 指出互斥的内存地址。
lock 指出互斥的锁定状态:yes 如果互斥已经锁定,no 如果没有锁定。
owner 如果锁定互斥,指出拥有该互斥的用户线程的符号名。
blockers 列出在互斥变量中锁定的用户线程。
注意: dbx 调试程序的 print 子命令识别互斥符号名,然后能用来显示相应对象的状态。
标志
lock 显示关于锁定互斥的信息。
unlock 显示关于未锁定互斥的信息。
thnum 显示特定线程的所有互斥的信息。
utid 显示用户线程 id 与给定用户线程 id 符合的用户线程的所有互斥信息。
示例
要显示所有互斥的信息,请输入:
mutex要显示所有锁定的互斥的信息,请输入:
mutex lock
要显示互斥号为 4、5、6的信息,请输入:
mutex 4 5 6输出类似于:
mutex obj_addr type lock owner blockers
$m4 0x20003274 non-rec no
$m5 0x20003280 recursi no
$m6 0x2000328a fast no要显示所有线程 1 的互斥信息,请输入:
mutex thnum 1要显示线程号为 0x0001 的线程拥有的所有互斥信息,请输入:
mutex utid 0x0001参见attribute 子命令、condition 子命令、print 子命令以及 thread 子命令。
另见AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Using Mutexes。
next 子命令
next [ Number ]
next 子命令运行应用程序到下一行。Number 参数指定 next 子命令运行的次数。如果没有指定 Number 参数,next 只运行一次。
如果您在多线程应用程序中使用 next 子命令,操作期间运行所有的用户线程,但是该程序继续运行直到运行到指定的行。如果您想单步运行正在运行的线程,使用 set 子命令对 $hold_next 变量进行设置。设置该变量将可能导致死锁,因为运行中的线程可能等待某个阻塞的线程拥有的锁。
示例
要继续执行到下一源行,请输入:
next要继续执行到当前源行后的第三行,请输入:
next 3请参阅 cont 子命令、goto 子命令、nexti 子命令、set 子命令以及 step 子命令。
nexti 子命令
nexti [ Number ]
nexti 子命令运行应用程序到下一个指令。Number 参数指定nexti 子命令运行的次数。如果没有指定 Number 参数,nexti 只运行一次。
如果您在多线程应用程序中使用 nexti 子命令,所有的用户线程在操作期间都将运行,但是程序将会继续运行直到运行的线程达到指定的机器指令。如果您想单步运行正在运行的线程,使用 set 子命令对 $hold_next变量进行设置。设置该变量将可能导致死锁,因为运行中的线程可能等待某个阻塞的线程拥有的锁。
示例
要继续执行到下一个机器指令,请输入:
nexti要继续执行到从当前机器指令起的第三个机器指令,请输入:
nexti 3参见gotoi 子命令、next 子命令、set 子命令以及stepi 子命令。另见 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Running a Program at the Machine Level。
print 子命令
print 表达式 ...
print Procedure ( [ Parameters ] )
print 子命令打印执行以下任务:
打印由Expression 参数指定的表达式列表的值。
执行 Procedure 参数指定的过程并将过程的返回值打印出来。包括的参数传递给过程。
示例
要显示x 以及 y 左移两位的值,请输入:
print x, y << 2要显示带参数 0 调用 sbrk 例程的返回值,请输入:
print sbrk(0)参见assign 子命令、call 子命令以及 set 子命令。
prompt 子命令
prompt [ "String" ]
prompt 子命令将 dbx 命令的提示符修改为String 参数指定的字符串。
例子
要将提示符修改为 dbx>,请输入:
prompt "dbx>"请参阅 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Defining a New dbx Prompt。
quit 子命令
quit
quit 子命令结束所有在 dbx 调试对话中的进程。
参见 detach 子命令。
registers 子命令
registers [ >File ]
registers 子命令显示通用寄存器、系统控制寄存器、浮点数寄存器以及当前指令寄存器的值。
通用寄存器由符号$rNumber 变量表示,其中Number 参数指定寄存器的序号。
注意: 寄存器的值可以设置成十六进制数 0xdeadbeef。十六进制数 0xdeadbeef 是一个在进程初始化时就赋到通用寄存器中的初始值。
浮点寄存器由 $frNumber 变量表示。按照缺省设置,浮点寄存器不会被显示出来。要显示浮点寄存器,使用 unset $noflregs dbx 子命令。
注意:如果当前线程正处于内核模式,registers 子命令将不能显示寄存器。
标志
>File 重定向输出到指定的文件。
参见set 子命令和 unset 子命令。另见 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Using Machine Registers。
rerun 子命令
rerun [ Arguments ] [ < File ] [ > File ] [ > > File ] [ 2> File ] [ 2> > File ] [ >& File ] [ > >& File ]
rerun 子命令开始目标文件的执行。Arguments 参数将会作为命令行参数传递。如果没有指定 Arguments 参数,最近一次 run 或者 rerun 子命令使用的参数将会被再次使用。
标志
<File 将输入重定向使得从 File文件中获得输入。
>File 重定向输出到 File文件中。
> >File 添加重定向输出到 File 中。
2>File 将标准错误重定向到 File 中。
2> >File 添加重定向标准错误到 File 中。
>&File 将输出和标准错误重定向到 File 中。
> >&File 添加输出和标准错误到 File 中。
参见 run 子命令。
return 子命令
return [ Procedure ]
return 子命令使应用程序执行直到返回到由 Procedure 参数指定的过程。如果没有指定 Procedure 参数,执行将会在当前过程返回时停止。
示例
要继续执行例程的调用,请输入:
return要继续执行至 main 过程,请输入:
return main rwlock 子命令
rwlock [read | write | RwlockNumber....]
rwlock 子命令显示 rwlocks 的信息。如果给定 RwlockNumber 参数,rwlock 子命令将会显示指定 rwlocks 的信息。如果没有指定标志或者参数,rwlock 子命令将会显示所有 rwlocks 的信息。
每个 rwlock 的信息如下:
rwl 设定 rwlock 的符号名称,格式为 $rw RwlockNumber。
flag_value 指出标志的值。
owner 指出 rwlock 的所有者。
status 指出谁拥有该 rwlock。这个值可以是读入(如果由读入者拥有)、写出(如果由写出者拥有)或者空闲(如果空闲)。
wsleep[#] 指出写入的线程阻塞。# 说明写入的线程阻塞的总数。
rsleep[#] 指出读入的线程阻塞。# 说明读入的线程阻塞的总数。
注意: dbx 调试程序的print 子命令识别 rwlock 的符号名称并能用于显示其对应的对象的状态。
标志
read 显示所有处于读状态的 rwlock 的信息。
write 显示所有处于写状态的 rwlock 的信息。
示例
要显示所有 rwlock 的信息,请输入:
rwlock输出类似于:
rwl flag_value owner status
$rwl 1 $t1 write
rsleeps[ 0]:
wsleeps[ 0]:要显示处于写状态的所有 rwlock 的信息,请输入:
rwlock write输出类似于:
rwl flag_value owner status
$rwl 1 $t1 write
rsleeps[ 0]:
wsleeps[ 0]:参见attribute 子命令、condition 子命令、 mutex 子命令、print 子命令以及 thread 子命令。
run 子命令
run [ Arguments ] [ <File ] [ >File ] [ > >File ] [ 2>File ] [ 2> >File ] [ >&File ] [ > >&File ]
run 子命令打开目标文件。Arguments 参数将会作为一个命令行参数使用。
标志
<File 将输入重定向使得从 File文件中获得输入。
>File 重定向输出到 File文件中。
2>File 将标准错误重定向到 File 中。
> >File 添加重定向输出到 File 中。
2> >File 添加重定向标准错误到 File 中。
>&File 将输出和标准错误重定向到 File 中。
> >&File 添加输出和标准错误到 File 中。
例子
要带参数 blue 和 12 运行应用程序,请输入:
run blue 12参见 rerun 子命令。
screen 子命令
screen
screen 子命令为 dbx 命令交互打开一个 Xwindow 窗口。您可以在进程发生的窗口继续操作。
screen 子命令必须在 dbx 调试程序运行在一个 Xwindows 环境下时运行。如果 screen 子命令运行于非 Xwindow 环境下,dbx 程序将会显示一个警告信息并且继续执行调试过程如同没有设定 screen 子命令。screen 子命令也可能在下述情况下失败:
dbx 程序没有运行在 Xwindows 环境下。
Xwindows 已经运行但是dbx 通用 $xdisplay 变量没有设置一个有效的显示名。 $xdisplay 变量被初始化成 DISPLAY 环境变量的值。dbx 子命令 set Name=表达式修改显示名称的值。
Xwindows 正在运行,但是 TERM 环境变量没有设置成一个有效的命令名称以调用新窗口。
/tmp 目录不允许对调试程序进行读写访问。dbx 程序要求在 screen 命令执行时该目录中有小量空间。
该系统没有足够的资源满足一个新的 Xwindow 窗口。
dbx 程序不能区分不同类型错误的区别,但是将会在子命令失败时发送如下的信息:
Warning:dbx subcommand screen fails. dbx
continues.如果$xdisplay 设置成远程显示,用户可能看不见新创建的 Xwindow。如果$xdisplay 设置不正确,Xwindows 或者其他的系统资源将会报告发生该问题。
新创建窗口的用户定义的配置可以在 .Xdefaults 文件中由 dbx_term 应用程序名定义。
示例
要打开一个 dbx 命令交互的 Xwindow 窗口,请输入:
screen请参阅 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Separating dbx Output From Program Output 和 AIX 5L Version 5.2 AIXwindows Programming Guide 中的 AIXwindows Overview。
set 子命令
set [ Variable=Expression ]
set 子命令为 dbx 调试程序变量定义一个值。其值由 Expression 参数指定;而程序变量由 Variable 参数指定。变量名不得和正在调试的程序中的使用名称相冲突。在其它命令内部扩展变量至相应的表达式。如果 set 子命令没有参数使用,将会显示当前的变量。
以下变量可以用 set 子命令设置:
$catchbp 在下一个命令执行期间捕捉断点。
$expandunions 显示变体记录或变体联合的每个部分的值。
$frame 使用由 $frame 的值指定的地址所指向的堆栈框架,来执行堆栈跟踪和访问局部变量。
$hexchars 按照十六进制值打印字符。
$hexin 按照十六进制解释地址。
$hexints 按照十六进制数值打印整数。
$hexstrings 按照十六进制打印字符指针。
$hold_next 控制在运行 cont、next、nexti 和 step 子命令时获得除了正在运行线程之外的所有线程。设置该变量将可能导致死锁,因为运行中的线程可能等待某个阻塞的线程拥有的锁。
$ignoreload 在您运行 load、 unload或者 loadbind 子例程时不会停止。
$instructionset 重设默认反汇编方式。以下列表包含了 Expression 参数可能取的值:
"default"
指定 dbx 程序运行的结构。
"com"
指定 POWER PC 和 POWER 系列体系结构的公共交叉模式的指令集。dbx 程序缺省设置为 基于 POWER 的 助记符。
"pwr"
指定 POWER 系列体系结构的指令集和助记符。
"pwrx"
指定 AIX 5.1 或者更早的 POWER2 实现 POWER 系列体系结构的指令集和助记符。
"601"
指定 AIX 5.1 和更早版本的 PowerPC 601 的指令集和助记符。
"603"
指定 AIX 5.1 和更早版本的 PowerPC 603 的指令集和助记符。
"604"
指定 PowerPC 604 RISC 微处理器 的指令集和助记符。
"ppc"
指定由基于 POWER 体系结构定义的指令集和助记符,除了可选指令。这些指令在所有的基于 POWER 实现的体系中有效,除了 AIX 5.1 或者更早的 PowerPC 601 RISC 微处理器。
"any"
指定任何有效的、基于 POWER 的或 POWER 系列系列的指令。对于重叠的指令,缺省助记符为 基于 POWER 的助记符。
如果没有设置 Expression 参数,dbx 将会使用缺省反汇编方式。
$listwindow 指定一个函数列表的行数以及不加参数使用 list 子命令时的列表的行数。缺省值是 10 行。
$mapaddrs 开始映射地址。取消 $mapaddrs 设置将停止地址映射。
$mnemonics 修改反汇编时 dbx 程序的助记符设置。
"default"
指定最接近指定的指令的助记符。
"pwr"
指定 POWER 系列结构的助记符。
"ppc"
指定 基于 POWER 的结构中定义的助记符,不包括可选指令。
如果没有设置 Expression 参数值dbx 程序将会最接近指定指令集的助记符。
$noargs 省略来自子命令的参数,例如 where、up、down 和 dump。
$noflregs 省略 registers 子命令中浮点寄存器的显示。
$octin 解释八进制的地址。
$octints 打印八进制的整数。
$pretty 与 print 子命令连用,按照 pretty printed 格式显示复杂的 C 及 C++ 数据结构(结构、联合、数组)的值。
"on"
指定值不换行打印、并带有表示值的静态范围的限定名称的美化打印。
"verbose"
指定各自行中每个值的恰当的打印并带有表示值的静态范围的限定名称。一个限定名称包含一个由点隔开与值相关外部块的列表。
"off"
指定关闭恰当打印。此为缺省设置。
$repeat 如果没有输入命令则重复前一个命令。
$sigblock 程序的阻塞信号。
$stepignore 控制在 step 子命令运行某一源行时 dbx 如何动作,该源行调用另一个无调试信息可返回的例程。该变量使得 step 子命令可以跳过大的无法获得调试信息的例程。以下列表包含了 Expression 参数可能取的值:
"function"
执行 dbx 命令的 next 子命令的函数。这是默认值。
"module"
如果函数处于一个装入块中而无法获得调试信息(例如系统库),则执行 next 子命令函数。
"none"
在后台执行 dbx 命令中的 stepi 子命令的函数直到达到源文件信息可得的一条指令。在这一点上 dbx 将会显示运行到哪儿停止了。
$thcomp 当设置了 $thcomp将会按照压缩格式显示线程命令 th- 的显示信息。
$unsafeassign 关闭对 assign 语句两端严格的类型检查语句。即使设置了 $unsafeassign 变量,assign 语句两边也不一定包含不同大小的存储类型。
$unsafebounds 关闭数组的下标检查。
$unsafecall 关闭子例程或者函数调用参数的严格类型检查。
$unsafegoto 关闭 goto 子命令目的地检查。
$vardim 指定在打印未知边界的数组时将使用的维度。缺省值是 10。
$xdisplay 指定显示的 Xwindows 的名称,用于 multproc 或者 screen 子命令。缺省值为 shell DISPLAY 变量的值。
$unsafe 变量限制了 dbx 调试程序在错误检测中的用途。
示例
要修改缺省的列表的行数为 20,请输入:
set $listwindow=20要禁用 assign 子命令的类型检查,请输入:
set $unsafeassign要使用 AIX 5.1 或者更早的 PowerPC 601 RISC 微处理器的反汇编机器指令,请输入:
set $instructionset="601"参见 unset 子命令。另见 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Changing Print Output with Special Debug Program Variables。
set edit [vi, emacs] 或 set -o [vi, emacs] 子命令
set 子命令带有 -o 或者 edit 选项可以用来打开某一行编辑模式。如果给出了 set-o vi 或者 set edit vi 命令,您将处于 vi 行编辑器的输入模式。如果给了 set -o emacs 或者 set edit emacs 命令,您将处于 emacs 行编辑器的输入模式。
示例
要打开 vi 行编辑器,请输入:
set-o vi或
set edit vish 子命令
sh [ Command ]
sh 子命令将 Command 参数指定的命令传递到 shell 执行。SHELL 环境变量决定使用哪个 shell。缺省值为 sh shell。如果没有指定参数,将把控制权交给 shell。
示例
要运行 ls 命令,请输入:
sh ls要进入 shell,请输入:
sh要使用 SHELL 环境变量,请输入:
sh echo $SHELL请参阅 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Running Shell Commands from dbx。
skip 子命令
skip [ Number ]
skip 子命令从当前的停止点继续执行程序。数目等于 Number 参数的值的断点将会被跳过并将在下一个断点处或者程序结束时停止执行。如果没有指定 Number 参数,缺省值为 1。
示例
要继续执行程序直到遇到第二个断点,请输入:
skip 1也可参见 cont 子命令。
source 子命令
source File
source 子命令从File参数指定的文件读入 dbx 子命令。
示例
要从 cmdfile 文件中读 dbx 子命令,请输入:
source cmdfile请参阅 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Reading dbx Subcommands from a File。
status 子命令
status [ >File ]
status 子命令显示当前活动的 trace 和 stop 子命令。> 标志将 status 子命令的输出送到由 File 参数指定的文件当中。
标志
>File 重定向输出到 File文件中。
参见 dbx 命令的 clear 子命令、delete 子命令、stop 子命令、trace 子命令。
另见 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Setting and Deleting Breakpoints。
step 子命令
step [ Number ]
step 子命令运行应用程序源命令行。通过 Number 参数指定执行的行数。如果省略了 Number 参数,缺省值为 1。
如果在多线程应用程序中使用 step 子命令,操作期间所有的用户线程都将运行,但是程序继续执行直到运行线程达到指定的源程序行。如果您想单步运行正在运行的线程,使用 set 子命令对 $hold_next变量进行设置。设置该变量将可能导致死锁,因为运行中的线程可能等待某个阻塞的线程拥有的锁。
注意: 使用set 子命令的 $stepignore 变量来控制 step 子命令的行为。 $stepignore 变量使 step 子命令单步跳过大的无法获得调试信息的例程。
示例
要继续执行一个源程序行,请输入:
step要继续执行五行,请输入:
step 5要防止 dbx 程序单步执行 printf 函数,如下述示例代码所述:
60 printf ("hello world \n");请输入:
set $stepignore="function"; step参见 cont 子命令、goto 子命令、next 子命令、set 子命令以及 stepi 子命令。
stepi 子命令
stepi [ Number ]
stepi 子命令运行应用程序的指令。通过 Number 参数指定执行的指令数。如果省略了 Number 参数,缺省值为 1。
如果在多线程应用程序上使用,stepi 子命令只单步执行当前运行线程。所有其它的线程都将停止。
示例
要继续执行一个机器指令,请输入:
stepi 要继续指令 5 个机器指令,请输入:
stepi 5参见 gotoi 子命令、 nexti 子命令、 step 子命令。
stop 子命令
stop { [Variable] [ at SourceLine | in Procedure ] [ if Condition ]}
stop 子命令在满足特定条件时停止应用程序。应用程序将会在下列条件停止:
Condition 值为真,如果使用了 if Condition 标志。
Procedure 被调用,如果使用了 in Procedure 标志。
如果指定了 Variable 参数,Variable 发生了改变。
如果设置了 at SourceLine 标志,就达到了 SourceLine 行。
SourceLine 变量可以通过一个整数或者代表文件名的字符串后跟 :(冒号)和一个整数的方法指定。
完成任意命令后,dbx 调试程序产生一个消息报告它已作为命令结果产生。该消息包括和您的断点相关的事件的 ID 以及您的命令的解释。解释的语法并不一定和您的命令相同。示例:
stop in main
[1] stop in main
stop at 19 if x == 3
[2] stop at "hello.c":19 if x = 3方括号中的数字是和断点相关的事件的标识符。dbx 调试程序将事件数和每个 stop 子命令联系起来。当一个事件导致程序停止后,事件标识符将与当前行一同显示,以说明导致程序停止的事件。您所创建的事件和由 dbx命令生成的内部事件共存,因此事件号可能不总是顺序的。
使用 status 子命令来查看这些事件号。您可以重定向 status 的输出到一个文件当中。使用 delete 或者 clear 子命令来关闭 stop 子命令。
在多线程应用程序中,所有用户线程都将在任何用户线程遇到断点时停止。在源文件行和函数中设置的断点将会被任何执行该行和该函数的用户线程遇到,除非您按照下述例 9 的方式指定条件。以下别名自动指定条件:
bfth(Function, ThreadNumber)
blth(SourceLine, ThreadNumber)
ThreadNumber 是线程符号名的数字部分,由 thread 子命令报告(例如,5 是名为 $t5 的线程的 ThreadNumber)。这些别名实际上是宏,它们产生扩展子命令如下:
stopi at &Function if ($running_thread ==
ThreadNumber)
stop at SourceLine if ($running_thread == ThreadNumber)标志
at SourceLine 指定行号。
if Condition 指定条件,例如真值。
in Procedure 指定调用的过程。
示例
要在 main 过程中第一个语句处停止,请输入:
stop in main当 x 变量的值在第 12 的行执行时改变时要停止执行,请输入:
stop x at 12要在 sample.c 文件的第五行停止执行,请输入:
stop at "sample.c":5要在 dbx命令每次运行 func1 的子例程时检查 x 的值,请输入:
stop in func1 if x = 22要检查dbx 命令每次开始运行 func1 函数时 x 的值,请输入:
stopi at &func1 if x = 22当改变 Variable 变量的值时要停止程序,请输入:
stop Variable要随时在 Condition 变为真时停止程序的运行,请输入:
stop if (x > y) and (x < 2000)以下例子列出了如何显示活动的事件并将它们删除:
status
[1] stop in main
[2] stop at "hello.c":19 if x = 3
delete 1
status
[2] stop at "hello.c":19 if x = 3
clear 19
status
(dbx) delete 命令用事件标识符删除事件。clear 命令通过行号删除了断点。
要将断点设置在 func1 的开始处,并且只有由线程 $t5 执行时有效,请输入以下等价命令之一:
stopi at &func1 if ($running_thread == 5)或
bfth(func1, 5)参见clear 子命令、delete 子命令、stopi 子命令以及 trace 子命令。另见 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Setting and Deleting Breakpoints。
stophwp 子命令
stophwp Address Size
stophwp 子命令为指定的内存区域设置一个硬件监视点停止。如果区域的内容改变程序就将停止。
注:
stophwp 子命令的成功之处在于硬件依赖性。这个功能只能在 630 型 、PowerPC 机型以及后来的型号中使用。
由于硬件只能设置一个监视点的限制,在试图创建另一个硬件观察点时活动的观察点事件将会在 stophwp 和tracehwp 发生冲突。同样的,以前的事件必须在创建一个新的事件之前删除。同样,因为存在一个活动的软件观察点(由一些 stop 和 trace 子命令调用生成)取消硬件监视点的性能,这些类型的事件也可以作为创建一个硬件监视点之前必须删除的冲突事件。
示例
1. 当起始地址为 0x200004e8 的 4 个字节的内存内容改变时要停止程序,请输入:
stophwp 0x200004e8 4参见 tracehwp 子命令。
stopi 子命令
stopi { [Address] [ at Address | in Procedure ] [ if Condition ]}
stopi 子命令在指定的位置设置一个停止点:
通过 if Condition 标志可以在指定条件为真时停止程序。
通过 Address 参数,当 Address 的内容被修改时程序停止运行。
通过 at Address 标志,在指定的地址设置停止点。
通过 in Procedure 标志,程序在调用 Procedure 时停止。
标志
if Condition 指定条件,例如真值。
in Procedure 指定调用的过程。
at Address 指定机器指令地址。
示例
在地址为 0x100020f0 处停止执行,请输入:
stopi at 0x100020f0要在地址为 0x100020f0 的内容被修改时停止,请输入:
stopi 0x100020f0要在地址为 0x200020f0 的内容被线程 $t1修改时停止,请输入:
stopi 0x200020f0 if ($running_thread == 1)参见 stop 子命令。另见 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Debugging at the Machine Level with dbx。
thread 子命令
显示选中的线程
thread { [ info ] [ - ] [ ThreadNumber ... ] } | current | run | susp | term | wait
选中一个单独线程
thread current [ - ] ThreadNumber
保持或者释放线程
thread { hold | unhold } [ - ] [ ThreadNumber ... ]
获得显示选项的帮助
thread { help}
thread 子命令显示和控制用户线程。
thread 子命令的第一种形式可以两种格式显示信息。如果 thread 子命令是 th那么将会使用第一种格式显示信息。如果 thread 子命令是 th -,那么将会按照第二种格式显示信息。如果没有指定参数,则会显示所有用户线程的信息。如果指定了一个或者更多的 ThreadNumber 参数,则会显示相关用户线程的信息。如果 thread 子命令显示线程,当前线程命令行前将会加上 >。如果运行中的线程和当前的线程不一致,该行前将会加上 * 符号。由 thread 子命令按照两种方式显示的信息如下。
由 thread 子命令按照第一种方式显示的信息如下:
thread 按照 $tThreadNumber格式指出用户线程的符号名。
state-k 指出核心线程的状态(如果用户线程连接了核心线程)。它可以是 run、wait、 susp 或者 term,分别对应运行、等待、挂起和终止。
wchan 指出核心线程正在等待或者睡眠的事件(如果用户线程连接了核心线程)。
state-u 指出用户线程的状态。可能的状态有 running、blocked或者 terminated。
k-tid 指出核心线程标识符(如果用户线程连接到核心线程)。
mode 指出用户线程停止的方式(如果用户线程连接到了核心线程),它可以是核心方式或用户方式。
held 指出是否保持用户线程。
scope 指出用户线程的争用作用域;对于系统或者进程争用域分别是 sys 或者 pro。
function 指出用户线程函数的名称。
由 thread 子命令按照第二种方式显示的信息如下。按照缺省值,对于 thread 子命令 th - 参数,显示的信息是长格式。
thread 指出用户线程的符号名按照 $tThreadNumber格式。
核心线程的相关信息
tid 指出用户线程标识符(如果用户线程连接了核心线程)。
pri 指出了核心线程的优先级。
sched 指出了核心线程的调度策略。它可以是 fif、oth 或者 rr,分别对应 fifo、其它和环(round robin)调度策略。
state 指出核心线程的状态(如果用户线程连接了核心线程)。它可以是 run、wait、susp 或者 zomb,分别对应运行、等待、挂起和僵尸(zombie)状态。
用户线程相关信息
tid 指出用户线程标识符。
pri 指出用户线程的优先级。
sched 指出了用户线程的调度策略。它可以是 fif、oth 或者 rr分别对应 fifo、其它和环(round robin)调度策略。
state 指出用户线程的状态。可以是 running、 creating、 suspended、 blocked、 runnable 或者 terminated。
state 按照十六进制指出用户状态。
flags 按照十六进制指出 pthread 标志的值。
wchan 指出核心线程正在等待或者睡眠的事件(如果用户线程连接了核心线程)。
mode 指出用户线程停止的方式(核心或者用户)(如果用户线程连接到了核心线程)。
held 指出是否保持用户进程。
scope 指出用户线程的争用作用域;对于系统或者进程争用域分别是 sys 或者 pro。
cancellation pending
指出是否取消处于挂起状态。
state
指出取消的模式和状态。
如果取消没有被挂起而状态和模式分别为启用和推迟,则用 ed表示,如果取消状态和模式分别为启用和异步,则用 ea代表,而如果模式没有启用,则用 d代表。
如果取消被挂起而取消的状态和模式分别为启用和推迟,则用 ED代表,如果取消状态和模式分别为启用和异步,则用 EA代表,而如果模式没有启用,则用 D代表。
joinable 指出线程是否可以连接。
boosted 指出线程 boosted 值。
function 指出用户线程函数的名称。
cursig 指出当前信号的值。
如果设置了可选项 $thcomp,则将会按照如下的压缩格式显示信息。
m mode (k)ernel (u)ser
k k-state (r)unning (w)aiting (s)uspended (z)ombie
u u-state (r)unning (R)unnable (s)uspended (t)erminated
(b)locked (c)reating
h held (yes) (n)o
s scope (s)ystem (p)rocess
c cancellation not pending: (e)nabled & (d)eferred,
(e)nabled & (a)sync, (d)isabled
pending : (E)nabled & (D)eferred,
(E)nabled & (A)sync, (D)isabled
j joinable (yes) (n)o
b boosted value of boosted field in pthread structure
plk kernel thread (oth)er (fif)o (rr)-> round-robin
policy
plu user thread (oth)er (fif)o (rr)-> round-robin
policy
prk kernel thread hex number
policy
pru user thread hex number
policy
k-tid 十六进制的内核线程标识
u-tid 十六进制的 pthread 标识
fl 十六进制的 pthread 结构中的标志字段的值
sta 十六进制的 pthread 结构中的状态字段的值
cs 当前信号值
wchan 线程正在等待的事件
function 函数名thread 子命令的第二种格式用来选择当前线程。dbx 调试程序的 print、registers 以及 where 子命令都在当前线程的上下文中工作。如果当前的线程处于核心模式 registers 子命令不能显示寄存器。
thread 子命令的第三种格式用来控制线程的执行。可以使用 hold 标志保持线程,或者使用 unhold 标志释放线程。保持的线程将不会再继续直到它被释放。
注意: dbx 调试程序的 print 子命令识别线程的符号名并可以显示相应对象的状态。
标志
current 如果没有指定 ThreadNumber 参数,将会显示当前的线程。如果指定了 ThreadNumber 参数,选择指定的用户线程作为当前线程。
help 显示所有在使用 th - 命令时显示的线程选项的相关信息。
hold 如果没有 ThreadNumber 参数,则会保持和显示所有的用户线程。如果指定了一个或者更多的ThreadNumber 参数,将会保持并显示指定用户线程。
unhold 如果没有指定 ThreadNumber 参数将会释放和显示所有以前保持的用户线程。如果指定了一个或者更多的 ThreadNumber 参数,将会释放并显示指定的用户线程。
info 如果没有指定 ThreadNumber 参数,将显示所有用户线程的长格式列表。如果指定了一个或者更多的 ThreadNumber 参数将会显示指定用户线程的长格式列表。
所有上述标志使用 [-] 选项。如果给定了该选项,则将按照第二种格式以及长格式显示信息,除非设置了 set $thcomp 选项。
run 显示处于 run 状态的线程。
susp 显示处于 susp 状态的线程。
term 显示处于 term 状态的线程。
wait 显示处于 wait 状态的线程。
示例
要显示所有处于 wait 状态的线程信息,请输入:
thread wait
输出类似于:
thread state-k wchan state-u k-tid mode held scope function
$t1 wait running 17381 u no pro main
$t3 wait running 8169 u no pro iothread要显示若干给定线程的信息,请输入:
thread 1 3 4输出类似于:
thread state-k wchan state-u k-tid mode held scope function
$t1 wait running 17381 u no pro main
$t3 wait running 8169 u no pro iothread
>$t4 run running 9669 u no pro save_thr要使线程 4 成为当前线程,请输入:
thread current 4
要保持 2 号线程,请输入:
thread hold 2
要以第二种格式显示处于等待状态的线程的信息,请输入:
thread wait -输出类似于:
thread m k u h s c j b kpl upl kpr upr k_tid u_tid fl sta wchan function
*$t1 u r w n p ed y 0 oth oth 61 1 0043e5 000001 51 004 main
$t3 u r w n p ed y 0 oth oth 61 1 001fe9 000102 51 004 iothread
>$t4 u r r n p ed y 0 oth oth 61 1 0025c5 000203 50 064 save_thr要按照第二种格式显示若干给定线程的信息,请输入:
thread - 1 2 3输出类似于:
thread m k u h s c j b kpl upl kpr upr k_tid u_tid fl sta wchan function
*$t1 u r w n p ed y 0 oth oth 61 1 0043e5 000001 51 004 main
$t3 u r w n p ed y 0 oth oth 61 1 00fe9 000102 51 004 iothread
>$t4 u r r n p ed y 0 oth oth 61 1 0025c5 000203 50 064 save_thr参见 attribute 子命令、condition 子命令、mutex 子命令、print 子命令、registers 子命令以及 where 子命令。
另见 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Creating Threads。
trace 子命令
trace [ SourceLine | Expression at SourceLine | Procedure | [ Variable ] [ at SourceLine | in Procedure ] ] [ if Condition ]
程序运行时 trace 子命令打印指定过程、函数、命令行、表达式或者变量的跟踪信息。SourceLine 变量可以通过一个整数或者代表文件名的字符串后跟 :(冒号)和一个整数的方法指定。可以指定条件。dbx 调试程序将一个数字和每个 trace 子命令联系起来。使用 status 子命令来查看这些数字。使用 delete 子命令来关闭跟踪。
根据缺省值,跟踪是基于进程的。要创建基于线程的跟踪,按照 例 8 的条件指定线程。
标志
at SourceLine 指定发现被跟踪的表达式的源行。
if Condition 指定跟踪开始的条件。跟踪只有在 if Condition 为真时开始执行。
in Procedure 指定用来发现被跟踪的过程或者变量的过程。
示例
要跟踪每个 printf 过程的调用,请输入:
trace printf要跟踪 hello.c 文件第 22 行的每次执行,请输入:
trace "hello.c":22要跟踪 x 变量在 main 过程中的修改,请输入:
trace x in main要跟踪数据地址 0x2004000,请输入:
set $A=0x2004000
trace $A
注意:tracei 子命令是用来跟踪地址的。
您可以将源行的打印限制在指定的 Procedure 活动的时候。您也可以指定可选择的 Condition 来控制何时产生跟踪信息。例如:
(dbx) trace in sub2
[1] trace in sub2
(dbx) run
trace in hellosub.c: 8 printf("%s",s);
trace in hellosub.c: 9 i = '5';
trace in hellosub.c: 10 }您可以在过程每次被调用或返回时显示一个消息。当调用了一个过程,该消息包括传递的参数和调用的例程的名称。在返回中,该信息包括从 Procedure返回的值。例如:
(dbx) trace sub
[1] trace sub
(dbx) run
calling sub(s = "hello", a = -1, k = delete) from function main
returning "hello" from sub您可以在程序运行到指定的行时打印 Expression 的值。行号和文件会打印出来,但是不会打印源命令行。例如:
(dbx) trace x*17 at "hellosub.c":8 if (x > 0)
[1] trace x*17 at "hellosub.c":8 if x > 0
(dbx) run
at line 8 in file "hellosub.c": x*17 = 51
(dbx) trace x
[1] trace x
initially (at line 4 in "hello.c"): x = 0
after line 17 in "hello.c": x = 3要跟踪 x 变量在 $t1线程中的变化,请输入:
(dbx) trace x if ($running_thread == 1)也可参见 tracei 子命令。
tracehwp 子命令
tracehwp Address Size
tracehwp 子命令为指定的内存区域设置一个硬件监视点停止。如果区域的内容发生了变化,dbx 调试程序打印跟踪信息。
注:
tracehwp 命令的成功之处在于硬件依赖性。这个功能只能在 630 型 、PowerPC 机型以及后来的型号中使用。
由于硬件只能设置一个监视点的限制,在试图创建另一个硬件观察点时活动的观察点事件将会在 stophwp 和tracehwp 发生冲突。同样的,以前的事件必须在创建一个新的事件之前删除。同样,因为存在一个活动的软件监视点(由一些 stop 和 trace 子命令生成)取消硬件监视点的性能,这些类型的事件也可以作为创建一个硬件监视点之前必须删除的冲突事件。
示例
要跟踪起始地址为 0x200004e8 的 4 个字节的内存内容,请输入:
tracehwp 0x200004e8 4 参见 stophwp 子命令。
tracei 子命令
tracei [ [ Address ] [ at Address | in Procedure ] | Expression at Address ] [ if Condition ]
tracei 子命令在如下情况下开启跟踪:
由Address 参数指定的地址内容改变,如果包含了 Address 标志。
如果指定了 at Address 参数,则运行 at Address 指令。
由 Procedure 指定的进程处于活动状态如果包含了 in Procedure 标志。
由 Condition 指定的条件为真如果包含了 if Condition 标志。
标志
at Address 指定一个地址。当该地址处的指令被运行时可以启用跟踪。
if Condition 指定条件。当满足该条件时启用跟踪。
in Procedure 指定一个过程。该过程处于活动时启用跟踪。
示例
要跟踪每个指令的执行,请输入:
tracei要跟踪每次在地址 0x100020f0 处执行的命令,请输入:
tracei at 0x100020f0要在main 过程活动时跟踪内存地址 0x20004020 内容每次发生的变化,请输入:
tracei 0x20004020 in main要跟踪线程 $t4 对地址 0x100020f0 处的指令的每次执行,请输入:
tracei at 0x100020f0 if ($running_thread == 4)参见 trace 子命令。另见 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Debugging at the Machine Level with dbx。
unalias 子命令
unalias Name
unalias 子命令删除由 Name 参数指定的别名。
例子
要删除名称为 printx 的别名,请输入:
unalias printx参见 alias 子命令。另见 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Creating Subcommand Aliases。
unset 子命令
unset Name
unset 子命令删除和由参数 Name 指定的名称相关的 dbx 调试程序变量。
例子
要删除禁止显示浮点数寄存器的变量,请输入:
unset $noflregs参见 set 子命令。另见 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Changing Print Output With Special Debugging Variables。
up 子命令
up [ Count ]
up 子命令将当前函数在堆栈内向上移动 Count 级。当前函数用来解析名称。Count 参数的缺省值为 1。
示例
要将当前函数在堆栈中向上移动两级,请输入:
up 2要显示堆栈中的当前函数,请输入:
up 0参见 down 子命令。另见 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Changing the Current File or Procedure、Displaying a Stack Trace。
use 子命令
use [ Directory ... ]
use 子命令设置当 dbx 调试命令寻找源文件时要搜索的目录列表。如果没有指定 use 子命令的参数,将会显示要搜索的当前目录列表。
@ (at 符号) 是一个特殊符号,它指示 dbx 程序查找目标文件中的完整路径名信息,如果存在的话。如果您有一个叫 @ 的相关目录要搜索,您可以在搜索路径中使用 ./@ 。
use 子命令使用 +(加号)来向搜索目录列表中添加目录。如果您有一个名为 + 的目录,指定一个完整的目录路径名(例如,./+ 或者 /tmp/+)。
示例
要将搜索目录列表更改为当前目录(.)、父目录(..)和 /tmp 目录,请输入:
use . .. /tmp要将搜索目录列表更改为当前目录(.)、源文件编译时 (@) 所在的目录和 ../source 目录,请输入:
use . @ ../source要将 /tmp2 目录添加到待搜索的目录列表中,请输入:
use + /tmp2也可参见 edit 子命令和 list 子命令。
whatis 子命令
whatis Name
whatis 子命令显示 Name 的声明,其中 Name 参数指定了变量、过程或者函数的名称,块名称可选。
注意: 只有在 dbx 调试程序运行时使用 whatis 子命令。
示例
要显示 x 变量的声明,请输入:
whatis x要显示 main 过程的声明,请输入:
whatis main