嵌入式Linux 应用开发教程 用gdb调试程序的bug_第1页
嵌入式Linux 应用开发教程 用gdb调试程序的bug_第2页
嵌入式Linux 应用开发教程 用gdb调试程序的bug_第3页
嵌入式Linux 应用开发教程 用gdb调试程序的bug_第4页
嵌入式Linux 应用开发教程 用gdb调试程序的bug_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机工程系实验报告成 绩:课程名称: 嵌入式Linux 应用开发教程 实验项目名称: 用gdb调试程序的bug指导教师(签名): 班级: 姓名: 学号: 实 验 目 的: 通过调试一个有问题的程序,进一步熟练使用vi操作,而且熟练掌握gcc编译命令及gdb的调试命令,通过对有问题程序的跟踪调试,进一步提高发现问题和解决问题的能力。实 验 环 境: linux 编译器gcc 调试器gdb vi编辑器实 验 内 容 及 过 程: (1) 使用vi编辑器,将一下代码输入到名为greet.c的文件中。此代码的原意为输出倒序main函数中定义的字符串,但结果显示没有输出,代码如下所示。 #includ

2、e int display1(char *string); int display2(char *string); int main() char string= “Embedded Linux”; display1 (string); display2 (string); Int display1 (char *string) printf (“The original string is %s n”, string);Int display2 (char *string1) char *string2; int size,i; size = strlen (string1); string

3、 = (char *) malloc (size + 1); for (i = 0;i size;i+) String2size - i =string1i;Stringsize+1 = ;printf(“The string afterward is %sn”,string2); (2) 使用gcc编译这段代码,注意要加上“-g”选项以方便之后的调试。(3) 运行生成的可执行文件,观察运行结果。(4) 使用gdb调试程序,通过设置断点,单步跟踪,一步步找出错误所在。(5) 纠正错误,更改源程序并得到正确的结果。实验过程:1. 使用 touch 命令创建名为greet.c的文件,并用 vi编辑

4、器将源代码输入保存。2. 使用gcc编译代码3. 使用gdb运行可执行文件执行结果未按预期输出倒序main函数中定义的字符4. 使用 l 命令查看源代码通过观察源代码发现display2中输出的string2在第23至26行形成,若输出错误则问题一定在这里生成。5. 在第27行设置断点,用 p 命令观察在 for循环完成后string2数组各元素中保存数据的情况。通过观察发现string2数组的第一个元素string20中没有存储数据6. 在第25行设置断点,使用单步跟踪一步步检查string2数组元素的状况通过单步跟踪发现数组string2的第一个元素string20还中没有被赋值,循环已经退出。7. 若将for循环中赋值语句的赋值顺序减一,即可将string20中赋值。8. 修改后重新编译运行程序程序按预期成功输出实 验 结 果 及 分 析: C语言中,char* 代表 字符指针类型,当其指向一个字符串的第一个元素时,它就可以代表这个字符串了。本次实验中的源代码正是由于忽视掉循环的次数,从而导致数组字符串的第一个元素没有被赋值,进而无法正确输出结果。 通过本次实验,不仅使我进一步熟悉了linux以及vi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论