zoukankan      html  css  js  c++  java
  • 5.2嵌入式linux程序编译与调试

    1. 实验二 嵌入式linux程序编译与调试

    • 实验目的:
    1. 学会使用及配置vim
    2. 掌握gcc编译器使用
    3. 掌握使用Gdb单步调试程序的方法
    • 实验要求:
    1. 熟悉使用该节所介绍的vim创建、编辑、保存文件。
    2. 分别用gcc实现预处理、编译、汇编、链接四个过程;
    3. 使用gcc编译多文件工程,并制作编译脚本。
    4. 利用Gdb单步调试修正结果错误的程序
    • 实验步骤:
    1. 用gcc实现预处理、编译、汇编、链接四个过程,使用gcc编译多文件工程,并制作编译脚本。

      1、gcc处理编译的四个过程

      1. 、源代码

     

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

  • 相关阅读:
    Java程序开发必备的6种知识
    Java技术在多数据库系统中的应用研究
    解决J2EE系统应用性能问题常用方法
    在Java中如何跳出当前的多重嵌套循环?
    Java学习是由简入难的学习过程
    浅谈Java SE、Java EE、Java ME三者的区别
    J2ee的学习方法及步骤摘要
    IOS 使用GCD改善性能
    IOS Cell重用机制
    BUG--tomcat更改目录失败
  • 原文地址:https://www.cnblogs.com/FORFISH/p/4201815.html
Copyright © 2011-2022 走看看