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

  • 相关阅读:
    js/jquery 页面传值
    php 连接sqlserver方法
    php 写webservice常见问题
    php 解决json_encode中文null和UNICODE转码问题
    手机web——自适应网页设计
    50个js技巧(分享)
    php webservice客户端和服务器端
    php 文件下载功能
    es6 字符串的扩展
    vue $emit抛出事件
  • 原文地址:https://www.cnblogs.com/FORFISH/p/4201815.html
Copyright © 2011-2022 走看看