* FunctionName:6a
将使得sdb在函数FunctionName中的第6行每次被执行时都将其显示出来 。
5.函数调用
sdb能够调用程序中用户自定义的任何函数 。这种功能对于下面两种情况可能比较有用:
在需要用各种不同的参数对函数进行测试 。
用用户自己定义的一个函数来显示程序中的某些数据 。
不论是何种情况,我们均可以用如下命令来进行函数调用:
* FunctionName(Arg1,Arg2,....)
或
* FunctionName(Arg1,Arg2,....)/m
在第一种用法下,sdb只是简单地执行指定的函数 。在第二种用法下,sdb将在执行指定的函数之后显示返回值 。此值一般将按十进制方式显示,除非指定了另外的显示格式 。
提供给函数的参数可以是寄存器名、整数、浮点数、字符、字符串常量或是其他局部当前函数,或者是当前函数可以访问的变量 。
6.变量的监视
sdb提供了一种被成为“观察点”(Watch)的机制 。借此机制,我们可以监视变量值得变化或某些地址的内容的变化 。例如:
* i $m
可用于设置对某个变量的观察点 。此处变量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中 。
"SomeString
指示sdb显示出某个字符串 。常用此命令给出某些提示信息,
k
此命令将使当前对程序的调试终止,之后仍可用r命令重新启动被调试的程序 。如:
* k
1111:killed
*
这里1111是被调试进程的进程号 。
* q
此命令将使sdb停止其自身的运行而返回至原Shell提示符下 。在调试完程序之后一般都要使用此命令 。UNIX系统开发-sdb命令使用:源程序的显示和搜索
sdb命令的使用
同我们前面介绍过的mail,ftp一类工具类似,sdb也是一个命令解释程序 。也就是说,用户在sdb提示符(一个星号*)下输入sdb能够识别的命令,sdb将根据被调试的程序的具体情况给出响应 。
例如,在运行myprog出错,生成core文件之后进入sdb时,sdb将给出如下的响应:
$ sdb myprog
12: return ((100/atoi(ValueInput))? TESTOK:! TESTOK);
*
sdb给出来的实际上是程序出错所在的函数,在源程序文件中的行号以及出错那一行的语句 。
在sdb的使用中要注意三个“当前”概念:
(1)当前文件 即当前将要被执行的语句所在的那个源程序文件
(2)当前函数 即当前将要被执行的语句所在的那个函数
(3)当前行 这个概念只有在编译时加入-g选项才会有,它指的是将要被执行的那条语句 。与当前行相应,有一个行号的概念 。它指的是每条语句在程序中位于第几行 。注意行号是从文件头开始计算的,第一行的行号为1,空白行和注释也包括在内 。
推荐阅读
- 七彩下雨天简笔画怎么画怎么画七彩下雨天简笔画
- unix下专供root调用程序的介绍
- 杭州为什么会下雪
- unixware7基本问题集锦
- ipad1怎么下载软件
- 下 万变不离其宗 明基P30手机功能初探
- SYBASE 11.0.0 For SCO Unix 安装手册
- 苹果和橘子的上下两端有什么不同
- SCO Unix十大常见故障
- 分享SCO UNIX安装经验
