




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式原理与应用实验 实验五实验五 gccgcc 编译程序与编译程序与 gdbgdb 调试程序调试程序 学号 1315212033 姓名 滕健伟 班级 13 电子二班 华侨大学电子工程系 实验五实验五 gccgcc 编译程序与编译程序与 gdbgdb 调试程序调试程序 一 实验目的一 实验目的 1 通过几种不同需求的程序 掌握使用gcc的各种选项编译程序 2 通过调试一个有问题的程序 使读者进一步熟练使用 vi 操作 而且熟练掌 握 gcc 编译命令及 gdb 的调试命令 通过对有问题程序的跟踪调试 进一 步提高发现问题和解决问题的能力 二 实验内容 二 实验内容 1 学习使用gcc的各种选项编译程序 1 编译和运行这段程序 hello c include int main void printf Hello world n return 0 2 创建静态库 并运行程序 pow test c include include int main int argc char argv unsigned int x y unsigned long long res if argc 3 sscanf argv 1 u exit 1 res unsgn pow x y printf u u u n x y res exit 0 unsgn pow c 库程序 unsigned long long unsgn pow unsigned int x unsigned int y unsigned long long res 1 if y 0 res 1 else if y 1 res x else res x unsgn pow x y 1 return res 创建静态库 然后编译主程序 并运行结果 3 针对 2 的程序 创建动态库 然后编译主程序 并运行结果 对比两 者的区别 4 对下面程序进行优化编译 对比优化前后的结果 并解释说明结果 include int main void double counter double result double temp for counter 0 counter 2000 0 2000 0 2000 0 20 0 2020 counter 5 1 4 temp counter 1979 result counter printf Result is lf n result return 0 对程序进行优化之后 可以明显看出程序运行的时间大大缩短了 提高了程序运行的效率 2 用gdb调试程序的bug 1 使用vi 编辑器 将以下代码输入到名为greet c 的文件中 此代码的原 意为输出倒序main函数中定义的字符串 但结果显示没有输出 代码如下所示 include 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 string2 char malloc size 1 for i 0 i size i string2 size i string1 i string2 size 1 printf The string afterward is s n string2 2 使用 gcc 编译这段代码 注意要加上 g 选项以方便之后的调试 3 运行生成的可执行文件 观察运行结果 观察这段代码并分析得知 代码所要实现的功能为将预先输入的一段字符串倒序输出 由运行结果可知 最后输出结果为空 产生了错误输出 但程序本身语法并不存在错误 4 使用gdb调试程序 通过设置断点 单步跟踪 一步步找出错误所在 首先使用gdb调试器打开所要调试文件 再通过gdb中的命令字符list l 查看载入的文件的 代码 由观察分析知 在25行和29行设置断点最为合适 设置断点后查看所设置断点处的 信息 紧接着运行代码 当程序运行到断点25处时自动停止 此时 通过命令 p 变量名称查 看变量值 此处 我选择查看size string1和string2的值 通过对原程序的分析可知 size 为字符串string1的大小 正确 string1显示为Embedded Linux 正确 而string2通过内存分 配获得了相应的内存 此时string2为空值 正确 选择继续运行代码 代码运行到29处时停止 重复上一步操作可知string2 0 为空值 而 string 1 13 均相对应的值 说明原程序中循环嵌套语句中出现了计算错误 错误语句为 String2 size i string1 i 5 纠正错误 更改源程序并得到正确的结果 将上述语句更改为 string2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版水电设施维修保养及安全检查合同
- 2025《合同法》深度解析与案例分析(附详细解答)
- 2025企业安全生产管理合同书示范文本
- 语法比较级和最高级课件
- 供应链风险管理评估工具全面覆盖
- 多功能销售数据统计分析平台
- 商场租赁及运营管理协议
- 红河色彩知识培训课件
- 红楼梦课件教学内容
- 诗经教学课件介绍
- 2025年交通安全知识测试题含答案详解
- 2023-2024学年湖南省耒阳市小学语文六年级下册期末自测测试题
- 12YJ4-1 常用门窗标准图集
- GB/T 12190-1990高性能屏蔽室屏蔽效能的测量方法
- 高血压的危害-课件
- ISO15189医学实验室认可概况课件
- 轻钢龙骨、双层石膏板吊顶施工方案
- 安全网(平网)张挂安全技术要求
- 危险品管理台帐
- 政务云收费标准 云托管收费标准
- 计算机辅助翻译实用教程ppt课件(完整版)
评论
0/150
提交评论