5.2嵌入式linux程序编译与调试
实验二 嵌入式linux程序编译与调试
- 实验目的:
- 学会使用及配置vim
- 掌握gcc编译器使用
- 掌握使用Gdb单步调试程序的方法
- 实验要求:
- 熟悉使用该节所介绍的vim创建、编辑、保存文件。
- 分别用gcc实现预处理、编译、汇编、链接四个过程;
- 使用gcc编译多文件工程,并制作编译脚本。
- 利用Gdb单步调试修正结果错误的程序
- 实验步骤:
- 用gcc实现预处理、编译、汇编、链接四个过程,使用gcc编译多文件工程,并制作编译脚本。
1、gcc处理编译的四个过程
- 、源代码
?
(2)、预处理
生成main.i预处理文件实现头文件、宏、预编译展开
?
(3)、编译
生成main.S汇编文件
(4)、汇编
最后调用as汇编器,从汇编文件生成main.o文二进制目标文件
?
(5)、链接
最后调用ld链接器,把目标文件链接成可执行文件
2、多文件工程编译
(1)、文件目录结构
自定义头文件放在inc目录内,辅助模块源文件放在src目录内
(2)、编译脚本
?
编译出带调试信息的可执行文件
(3)、执行编译
????
(4)、编译结果
运行调试通过后,可以strip掉多余的符号信息,进行发布
二、利用Gdb单步调试修正结果错误的程序
1、错误程序源码,
2、编译程序
3、运行程序
逆向字符串打印结果不能正常显示!
4、利用Gdb调试定位问题
(1)、启动gdb载入调试程序
???? (2)、断点到有问题的函数
?
???? (3)、执行程序,运行至断点处
?
???? (4)、显示问题函数代码
?
(5)、断点到问题产生点
?
(6)、继续执行,在问题产生点停下
?
(7)、显示问题变量
?
字符串逆向拷贝时数组位置向后多偏移了一位:
应该改为:
?
(7)、修改代码,程序编译运行验证
实验心得:
????该实验是实现嵌入式linux程序的简单编译和调试的实现,主要是让我们学会如何去调试,深刻体会程序执行的每一个步骤,理解程序运行的实际过程。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。