UNIX系统开发-SDB调试技术( 三 )


可用于设置对某个变量的观察点 。此处变量i为被监视的变量 。而用:

* 0x00400000:m

则可将地址0x00400000 处设置成观察点,而0x00400000将成为被监视的地址 。

在设置了观察点之后,sdb会同处理S命令一样开始程序的单步执行,并在变量的值或指定地址单元的内容被改变时停止程序的执行 。由于变量值的改变或地址内容的变化,或者其他什么原因而使程序的执行中止,包括因为遇到断点而使程序停止的情形,都将使得所设置的观察点被sdb自动删掉 。被观察的变量必须是当前函数的局部变量或者是当前函数所能够访问的变量 。

其他命令

除了上面介绍的五类主要命令之外,sdb还支持其他一些命令 。使用这些命令,可以完成其他一些辅助性的工作 。分别介绍如下 。

. !Shell Command

此命令可以使sdb去执行指定的Shell Command 。这里Shell Command是一个合法命令 。例如可以输入:

* ! ls -l

sdb将执行指定的ls -l 命令,并将其输出显示出来 。

使用:
* ! sh

能够生成一个新的Shell进程 。在此新的Shell中可以完成某些工作,然后用exit命令返回到sdb中 。

指示sdb从文件FileName中读取sdb调试命令,并且逐个执行之 。

"SomeString
指示sdb显示出某个字符串 。常用此命令给出某些提示信息,
 k 此命令将使当前对程序的调试终止,之后仍可用r命令重新启动被调试的程序 。如:

* k
1111:killed
*
这里1111是被调试进程的进程号 。
* q
此命令将使sdb停止其自身的运行而返回至原Shell提示符下 。在调试完程序之后一般都要使用此命令 。

推荐阅读