嵌入式培训学习历程第六天

  感觉有点累了,希望能尽快做完,早点回去休息。嗯哼。。。

  编译工具gcc

  1.gcc简介 : 是GNU(GUN COmpiler Collection)的简称,是Linux平台下的嵌入式开发领域。

  2.程序的编译过程 :
        四个阶段 :预处理,编译,汇编,链接。

预处理 *.c -E *.i 中间文件
编译  *.i  -S *.s 汇编文件
汇编 *.s -c *.o 目标文件
链接 *.o   *.out(默认,可以自己指定) 可执行文件

         扩展 :反汇编   0bjdump -dS  *.o > *

         提示 :直接从*.c文件生成目标文件*.o    命令 :gcc -c *.c      

             如果仅仅把源文件编译成目标文件的时候,main函数不是必须的。 

         注意 :同时链接多个源文件  命令 :gcc -o a.out *.c *.c *.c

            编译多个文件时,如果文件不再目录下,可以用参数-I来指定目录、

         加油站 :gcc -D TEST_CONFIGURATION test.c -o test  等同于  #define TEST_CONFIGURATION  (不必修改源文件就能改变符号控制的行为)

  3.警告功能

          -Wall  : 提示程序着哦你的一系列常见错误警告

          -Werror : 将警告作为一个错误来处理,会中断编译过程

        调试工具gdb       

  1.GDB(GNU DeBugger) : 是GNU的调试器,一般和gcc配搭使用.

  2.基本命令

          f (file): 指定一个可执行文件进行调试。

          l (list): 列程序出源文件

          r (run): 运行可执行文件

          b (break): 设置断点

          c (continue) : 可以另中断的程序继续执行,直到下一个中断点或结束

          p (print) : 输入某个变量的值

          n (next) : 单步执行

          s (step) : 单步进入某一函数

          q (quit) : 退出GDB

    (1).调试命令编译程序 :  终端输入 : gcc -g *.c -0 *.exe

    (2).生成*.exe的可执行文件,用GDB调试程序需要执行 :gdb *.exe

        1.在gdb命令行中输入 list 打印源程序,再次输入 list 进行翻页    

        2.输入 b 11  : 表示在源程序的第11行设置新断点

              提示 :info b   查看已经设置的断点

                  delete 断点号  删除断点

                  disable 断点号  清除断点

        3.输入run 执行程序

        4.输入s单步执行进入函数

        5.输入n单步执行

        6.输入p i  查看变量i 的值

        7.最后,输入c, 程序继续执行,然后正常退出。

     扩展 : 调试过程中,,内存会有栈帧在占用, 有两个特点 :(1).局部变量 (2).临时值

          用bt查看当前栈帧的使用情况

          frame + 栈帧号  切换栈帧

          info locals   查看基本情况

  今天的英语 :variable(变量)    format(格式)  arguments(参数)

   

              

        

      唉。。好了,想睡觉了。。有点担心。。

原文地址:https://www.cnblogs.com/cxw825873709/p/3209287.html