Linux学习(十二):gcc编译和gdb调试
2017-09-13 20:07
295 查看
1 GCC编译器
GNU CC(简称为gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。gcc不仅功能强大,而且可以编译如C、C++、Object C、Java、Fortran、Pascal、Modula-3和Ada等多种语言,而且gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译。2 GCC编译过程
整个的编译过程如下:(1)预处理阶段
在该阶段,对包含的头文件(#include)和宏定义(#define、#ifdef等)进行处理 。可以使用gcc的选项“-E”
让
gcc在预处理结束后停止编译过程。可以进入hello.i查看一下,里面就是对库文件和宏定义的处理。并且此时,即使你的
文件有错误也不会检查。
(2)编译阶段
接下来进行的是编译阶段,在这个阶段中,gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实
际要做的工作,在检查无误后,gcc把代码翻译成汇编语言。用户可以使用“-S”选项来进行查看。
(3)汇编阶段,将汇编文件编译成可执行的目标文件。用-c选项
(4)链接 将所有的依赖文件编译成一个可执行文件
几个常用的gcc选项如下列表
还可以添加警告信息
3 GDB调试
gdb调试器是一款GNU开发组织并发布的UNIX/Linux下的程序调试工具。虽然,它没有图形化的友好界面,但是它强大的功能也足以与微软的VC工具等媲美,例如设置断点,单步调试,查看变量这些功能都可以实现。
常用的命令:
我们举几个例子:b 行号/函数名 设置断点 info b 查看断点
在gdb调试前先进入gdb的模式,通过以下两步就可以某个执行文件的gdb调试模式
1、设置断点
我们的源文件如下
我们在第7行和第10行设置断点。break可以用b来代替
(2)运行:r 全速运行(到断点),s(step)单步运行且进入函数内部,n(next)单步运行不进入函数
内部
(3)查看变量名 p +变量名
相关文章推荐
- 【Linux学习笔记八】Linux编程-编译(gcc)与调试(gdb)
- 在linux下用gdb调试gcc编译的代码;以及反汇编的操作
- Linux——【转】gcc编译与gdb调试简要步骤
- linux-编译gcc调试gdb与安装make与core
- Linux编程-编译(gcc)与调试(gdb)
- GCC编译选项与GDB调试学习总结
- Linux下编译调试C程序(GCC,GDB)
- Linux gcc gdb 编译调试程序
- Linux GCC编译、gdb调试、makefile、动态链接库的创建
- Linux下的简单C程序gcc编译、gdb调试。
- Linux学习 [2] vi编辑器 gcc工具链 make和Makefile gdb调试工具
- Linux 下 C 编译gcc与调试gdb工具介绍
- 使用gcc -g编译,gdb调试时仍然存在“no debug symbols found”的错误
- linux下的多线程调试(gdb) 分类: 嵌入式开发学习 2011-07-21 22:37 3337人阅读 评论(0) 收藏
- linux 下c 编译和调试 分类: 嵌入式开发学习 2011-03-10 20:33 2433人阅读 评论(0) 收藏
- windows下建立gcc/g++/gdb/make编译及调试C/C++的IDE环境
- linux下GCC编译环境中二叉树遍历、C语言实现以及调试过程中段错误
- linux基础(十二)内核学习及编译
- c++求教:我在linux下用CodeLite编译调试时出现&"warning: GDB: Failed to set controlling terminal: Operation not permitted/n"
- 在Linux中用gdb调试GCC程序