1.gcc/g++编译过程:

  gcc/g++的编译格式:

  gcc [option][filename]...

  g++ [option][filename]...

  1)processing:预处理过程,对文件中的文件包含,预编译语句进行处理,使用参数-E;

  2)compilation:调用cc进行编译,将输入文件编译成.s的汇编文件,使用参数-s;

  3)Assembly:调用as进行编译,将.S或.s文件编译成.o的目标文件,使用参数-c;

  4)Linking:在生成目标文件生进行连接,使用参数-o。

  后缀标识处理:

后缀 语言 处理
.c c语言 预处理,编译,汇编
.C c++语言 预处理,编译,汇编
.cc c++语言 预处理,编译,汇编
.cxx c++语言 预处理,编译,汇编
.i c语言 编译,汇编
.ii c++语言 编译,汇编
.s 汇编语言 汇编
.S 汇编语言 预处理,汇编

  一个简单的例子:(g++与gcc的用法相同)

  

  gcc -c hello.c (包含了-E,-s)编译源文件,生成目标文件:

  

  gcc -o hello hello.o连接,生成可执行文件hello:

  

  ./hello执行可执行文件hello

  

2.gdb的基本命令

  GDB是GNU发布的一个强大的Unix/Linux下的程序调试工具,可以完成如下调试功能:

  1)自定义运行程序;

  2)设置断点;

  3)动态设置程序运行变量值;

  4)程序的单歩执行。

  一个简单的例子:

  

  如果要用gdb进行调试程序,在编译时应该使用-g参数,生成可执行文件:

  gcc -g test.c -o test

  

  l(list的缩写,表示列出源码),l n 表示从第n行列出源码:

  

  break表示添加断点,break n 表示在第n行设置断点,break fun表示在函数入口设置断点,info breakpoints表示查看断点信息,可用delete删除断点:

  

  r(run)运行程序:

  

  n(next)运行下一行,c表示继续运行程序:

  

  p表示打印,p i表示打印变量i的值:

  

  bt查看堆栈,回车表示继续上一个命令:

  

  finish结束执行:

  

  q表示退出gdb。

gcc与gdb的使用的更多相关文章

  1. CentOS下安装gcc和gdb

    我的操作系统是CentOS6.4,安装源里自带了gcc4.4.0和gdb7.0,版本略老遂删除之重新安装. gcc 1.下载源码包,解压 //下载 wget http: //ftp.gnu.org/g ...

  2. 01 C语言程序设计--01 C语言基础--第1章 C语言概述&第2章 GCC和GDB

    走进嵌入式开发的世界,企业级项目课程让你达到企业嵌入式应用开发要求.名师在线答疑,解决疑难.科学评测体系,系统评估学习.核心项目实........ 30 门课程 241小时12分钟 824 人学习 学 ...

  3. Linux gcc和gdb程序调试用法 {转}

    gcc一般调试格式: gcc -Wall -o  test   test.c // -wall  显示程序错误详细信息      gcc -v  // 显示gcc的版本 gcc -o{1,2,3} t ...

  4. gcc和gdb的基本操作

    gcc和gdb yum 在线安装软件,使用阿里云镜像站,OPSX 选择你安装的系统 点帮助 查看配置命令行 yum --list | grep gdb #查找要安装的软件 yum install -y ...

  5. 【学习总结】gcc和gdb

    目录 <> vim.gcc.gdb: gcc: gcc和g++是c/c++的linux系统集成的编译器,源文件的后缀应为 .C/.cpp/.c++/.cc等 编译器可以将C.C++等语言源 ...

  6. Linux 之 GCC 和 GDB

    1  GCC = GNU C Compiler 1)  pre-processing (预处理) $ gcc -E -o hello.i hello.c // -E 预处理后停止 2)  compil ...

  7. Linux下gcc与gdb简介

    gcc编译器可以将C.C++等语言源程序.汇编程序编译.链接成可执行程序.gdb是 GNU 开发的一个Unix/Linux下强大的程序调试工具. linux下没有后缀名的概念.但 gcc 根据文件的后 ...

  8. gcc与gdb版本兼容问题

    今天在用gdb调试C++程序的时候,想用"p i”命令打印出程序的一个局部变量i,却一直提示: No symbol "i" in current context. 我愣了 ...

  9. 20135328信息安全系统设计基础第二周学习总结(vim、gcc、gdb)

    第三周学习笔记 学习计时:共8小时 读书:1 代码:5 作业:1 博客:7 一.学习目标 熟悉Linux系统下的开发环境 熟悉vi的基本操作 熟悉gcc编译器的基本原理 熟练使用gcc编译器的常用选项 ...

  10. Vim与GCC和gdb完美组合

    一.vim vim修改一下配置文件后,如果你稍微会点vim的命令使用,那可比一般的编辑器好用啊,如果一点不会vim的命令使用,就跟一般编辑器一样使用. 打开etc/vim/vimrc文件 这里的引号是 ...

随机推荐

  1. BZOJ4320 ShangHai2006 Homework(分块+并查集)

    考虑根号分块.对于<√3e5的模数,每加入一个数就暴力更新最小值:对于>√3e5的模数,由于最多被分成√3e5块,查询时对每一块找最小值,这用一些正常的DS显然可以做到log,但不太跑得过 ...

  2. ListView获取网络数据并展示优化练习

    权限: <uses-permission android:name="android.permission.INTERNET"></uses-permission ...

  3. 模拟赛 yjqa

    考场上怕是石乐志. 状态设计还是很自然的,求什么设什么. f[i]表示前i个人安排好,电梯最早回到0层的时间 转移的话,枚举上一次最后一个带走的是谁 f[i]=min(max(f[j],t[i])+2 ...

  4. 洛谷P1273 有线电视网 (树上分组背包)

    洛谷P1273 有线电视网 题目描述 某收费有线电视网计划转播一场重要的足球比赛.他们的转播网和用户终端构成一棵树状结构,这棵树的根结点位于足球比赛的现场,树叶为各个用户终端,其他中转站为该树的内部节 ...

  5. kubernetes 参考资料

    kubernetes 参考资料 非常建议先花20分钟,完成这个官方的交互式指南:https://kubernetes.io/docs/tutorials/kubernetes-basics/ 这个教程 ...

  6. Lucene6去掉了Filter但是可以用BooleanQuery实现Filter查询

    Lucene在6.0版本之后彻底废除了Filter的使用,采用BooleanQuery来实现Filter的功能,核心代码如下: TermQuery termQuery = new TermQuery( ...

  7. cmd常用命令行

    新建文件夹或文件 打开磁盘     F: 退出cmd     exit 返回上一级     cd.. 创建文件夹     md 文件夹名 在d盘创建文件夹     md d:\文件夹名 在当前目录打开 ...

  8. POJ1061-青蛙的约会---扩展欧几里德算法求最小整数解

    扩展欧几里得算法模板 #include <cstdio> #include <cstring> #define ll long long using namespace std ...

  9. 【BZOJ】1708: [Usaco2007 Oct]Money奶牛的硬币

    [算法]DP [题解] 如果每个排列算一种,则令f[i]表示凑成面值为i的方案数,容易推出f[i]+=f[i-a[j]]. 现在是每个组合才算一种,令f[i][j]第二维表示只使用前j种面值,f[i] ...

  10. Vue 还是 React 还是 Angular ?

    有空的时候还是把3个都熟悉一下.除了Angular学习起来笔记花时间外.React跟Vue没啥难度,学习用的时间不多. 如果你在Google工作:Angular如果你喜欢TypeScript:Angu ...