没有合适的资源?快使用搜索试试~ 我知道了~
首页UNIX系统调试:sdb命令详解与源码查看
UNIX系统调试:sdb命令详解与源码查看
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 14 浏览量
更新于2024-08-08
收藏 22KB DOC 举报
"sdb命令是UNIX系统中用于程序调试的重要工具,它允许用户查看和交互地控制程序的执行,尤其在处理程序崩溃和错误时非常有用。sdb提供了丰富的命令来帮助开发者理解程序的运行状态,包括源代码的显示和搜索功能。在使用sdb时,有三个关键的‘当前’概念:当前文件、当前函数和当前行。当前文件是指执行语句所在的源代码文件,当前函数是执行的函数,而当前行则是即将执行的代码行,但这个概念需要在编译时加入-g选项才能获取。" 在sdb中,当程序因异常产生core文件时,sdb会自动定位到出错的函数和行。如果在没有-g选项的情况下编译,sdb只能显示函数名和地址,而不能提供具体的行号。如果是在活动进程中调试,sdb会将当前函数和行设置为主函数main()的第一行。 sdb提供的源代码显示和搜索功能对于调试至关重要。显示源代码的命令是`w`,它会显示当前行及其上下10行的内容,方便查看上下文。在调试过程中,开发者可能需要查找特定符号或字符串的位置,sdb提供了类似于vi编辑器的搜索功能。另外,源代码的显示方式与另一个编辑器ed相似,尽管这里没有详细展开讨论。 在后续的调试过程中,sdb提供了多种控制程序执行和检查变量变化的命令,比如设置断点、单步执行、继续执行到下一个断点或条件等。这些功能使得sdb成为了一个强大的调试助手,帮助开发者追踪程序的执行流程,找出隐藏的错误和问题。 sdb是UNIX环境中一个不可或缺的程序调试工具,通过其丰富的命令集,开发者可以深入理解程序的执行过程,定位并修复问题。掌握sdb的使用,对于提高UNIX系统下的软件开发效率和质量具有重要意义。
资源详情
资源推荐
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,空白行和注释也包括在内。
在用 core 文件进行调试时,当前行和当前函数分别被设成是程序出错时所执行的那条语句
所在地行和函数(如同上面显示出来的那样)。但如果在编译时未加 -g 选项,显示出来的
将只有函数名和函数的地址了。
在对活动进程进行排错时,sdb 将把当前函数和当前行分别设成是 main()函数和 main()函数
的第一个可执行的语句行。
不论是哪种情况,sdb 都将显示出*提示符。在此提示符之下我们可以输入各种 sdb 命令,
以控制程序的执行或观察变量的变化情况,等等。在下面的几个小节中我们将分别详细讨
论这些问题。
源程序的显示和搜索
程序出错一般来说不只是出错的那条语句本身造成的。事实上出现错误经常是前面或相关
的代码执行了不正确的操作或少了某些必要的处理。因此调试过程中经常要观察一下源程
序中的语句,或者在程序中搜索某个符号出现在什么地方。其中字符串的搜索功能同 vi 基
本上是相同的,而文件的显示则同另外一个我们没有具体讨论的编辑器 ed 类似。下面我们
将具体介绍这些命令。
1.源程序的显示
在用 core 进入 sdb 之后,在*提示符后输入 w 命令,该命令指示 sdb 显示源程序中的当前行
为中心的前后 10 行的内容并保持当前行不变:
* w
7:int
8: TestInput(char * ValueInput)
9: {while ( * ValueInput)
10: if (! isdigit( * ValueInput)) return (! TESTOK);
11: else ValueInput++;
12: return ((100/atoi(ValueInput))? TESTOK:! TESTOK);
13: }
*
我们看到,在进入 sdb 时,当前行是第 12 行,以该行为中心的 10 行内容正好就是上面所
下载后可阅读完整内容,剩余3页未读,立即下载
qq_53178901
- 粉丝: 1
- 资源: 1581
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功