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

浙公网安备 33010602011771号