-
实验二 嵌入式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程序的简单编译和调试的实现,主要是让我们学会如何去调试,深刻体会程序执行的每一个步骤,理解程序运行的实际过程。