《2022年linux实验四 .pdf》由会员分享,可在线阅读,更多相关《2022年linux实验四 .pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、北 京 XXXX 大 学2010 学年 2011 学年第二 学期 Linux应用 实验任务书专业名称:信息管理与信息系统班级:姓名:学号:实验地点:任课教师:实验题目:实验四 gcc 和 gdb 的基本使用实验环境: Red Hat Linux 9 实验目的 :通过调试一个有问题的程序, 进一步熟练使用Vi 操作,而且熟练掌握Gcc 编译及 Gdb 的调试命令,通过对有问题程序的跟踪调试,进一步提高发现问题和解决问题的能力。实验内容 :Gdb调试题目:(1) 使用 Vi 编辑器,将以下代码输入到名为greet.c 的文件中。此代码的原意为输出倒序 main 函数中定义的字符串, 但结果显示没有
2、输出。 代码如下所示:(2) 使用 Gcc 编译这段代码。(3) 运行生成的可执行文件,观察运行结果。(4) 使用 Gdb 调试程序,通过设置断点、单步跟踪,一步步找出错误所在。(5) 纠正错误,更改源程序并得到正确的结果。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - 实验步骤:(1)在工作目录上新建文件greet.c,并用 Vi 启动: vi greet.c。(2)在 Vi 中输入以上代码。名师资料总结 - - -精品资料欢
3、迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - (3)在 Vi 中保存并退出: wq。(4)用 Gcc 编译:(5)运行 greet :./greet,输出为:可见,该程序没有能够倒序输出。(6)启动 Gdb 调试:(7)查看源代码并进行调试。 使用 l查看源代码将原来有错的程序经过Gdb调试,找出问题所在, 并修改源代码, 输出正确的倒序显示字符串的结果。实验步骤中请适当截图。GNU 调试器是一个功能非常强大的工具。要了解更加详尽的知识,建议阅读GNU 调试器
4、手册。用 b 行号 命令来设置断点,发现string0没有被正确赋值。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - 经过调试之后发现错误原因在于size-i,由于 i 只能增加到 size-i,这样string20的值就永远不能被赋值而保持NULL 。把 string2size-i=stringi改为 string2size-i-1=string1i修改重新编译后输出结果正确编程题目( 2 选 1) : 汉诺塔游戏。约 19
5、世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下、由小到大顺序串着由N 个圆盘构成的塔。目的是将最左边杆上的盘全部移到右边的杆上,条件是一次只能移动一个盘, 且不允许 大 盘放在 小 盘的上面。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - 图的遍历。请用深度优先搜索或广度优先搜索对上图的文件系统树进行遍历。汉诺塔:1)新建 hanoi.c文件 输入代码保存2) gcc 编译 hanoi.c 为
6、 hanoi ./执行/ dirC dirA dirB my3.dat my1.dat my2.dat my1.dat 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 8 页 - - - - - - - - - 附上源代码:#include void move(int n,char a,char c) printf(Move disk %d from %c to %c:n,n,a,c); void hanoi(int n,char a,char b,char c) if(
7、n=1)move(n,a,c); else hanoi(n-1,a,c,b); move(n,a,c); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - hanoi(n-1,b,a,c); int main() int n; printf(input the number of disks:); scanf(%d,&n); printf(the step to moving %3d diskes:n,n); hanoi(n,a,
8、b,c); 实验中存在的问题及解决办法:1、次进行 gcc编译的时候出现了一下语法的错误如下,后经改正之后没有错误。2、在用 gdb进行调试的时候,会运用到各种命令:查看源代码 l 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - - - - - 设置断点 b 行号查看设置断点情况 info b 运行代码 r 单步代码 n 继续程序的运行 c 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -