gcc与gdb的使用
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的使用的更多相关文章
- CentOS下安装gcc和gdb
我的操作系统是CentOS6.4,安装源里自带了gcc4.4.0和gdb7.0,版本略老遂删除之重新安装. gcc 1.下载源码包,解压 //下载 wget http: //ftp.gnu.org/g ...
- 01 C语言程序设计--01 C语言基础--第1章 C语言概述&第2章 GCC和GDB
走进嵌入式开发的世界,企业级项目课程让你达到企业嵌入式应用开发要求.名师在线答疑,解决疑难.科学评测体系,系统评估学习.核心项目实........ 30 门课程 241小时12分钟 824 人学习 学 ...
- Linux gcc和gdb程序调试用法 {转}
gcc一般调试格式: gcc -Wall -o test test.c // -wall 显示程序错误详细信息 gcc -v // 显示gcc的版本 gcc -o{1,2,3} t ...
- gcc和gdb的基本操作
gcc和gdb yum 在线安装软件,使用阿里云镜像站,OPSX 选择你安装的系统 点帮助 查看配置命令行 yum --list | grep gdb #查找要安装的软件 yum install -y ...
- 【学习总结】gcc和gdb
目录 <> vim.gcc.gdb: gcc: gcc和g++是c/c++的linux系统集成的编译器,源文件的后缀应为 .C/.cpp/.c++/.cc等 编译器可以将C.C++等语言源 ...
- Linux 之 GCC 和 GDB
1 GCC = GNU C Compiler 1) pre-processing (预处理) $ gcc -E -o hello.i hello.c // -E 预处理后停止 2) compil ...
- Linux下gcc与gdb简介
gcc编译器可以将C.C++等语言源程序.汇编程序编译.链接成可执行程序.gdb是 GNU 开发的一个Unix/Linux下强大的程序调试工具. linux下没有后缀名的概念.但 gcc 根据文件的后 ...
- gcc与gdb版本兼容问题
今天在用gdb调试C++程序的时候,想用"p i”命令打印出程序的一个局部变量i,却一直提示: No symbol "i" in current context. 我愣了 ...
- 20135328信息安全系统设计基础第二周学习总结(vim、gcc、gdb)
第三周学习笔记 学习计时:共8小时 读书:1 代码:5 作业:1 博客:7 一.学习目标 熟悉Linux系统下的开发环境 熟悉vi的基本操作 熟悉gcc编译器的基本原理 熟练使用gcc编译器的常用选项 ...
- Vim与GCC和gdb完美组合
一.vim vim修改一下配置文件后,如果你稍微会点vim的命令使用,那可比一般的编辑器好用啊,如果一点不会vim的命令使用,就跟一般编辑器一样使用. 打开etc/vim/vimrc文件 这里的引号是 ...
随机推荐
- 浅析JavaScript的垃圾回收机制
JavaScript语言是一门优秀的脚本语言.其中包含脚本语言的灵活性外还拥有许多高级语言的特性.例如充许构建和实例化一个对象,垃圾回收机制(GC:Garbage Collecation).通常我们使 ...
- HDU 5671 矩阵
Matrix Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Su ...
- Supermarket [堆]
Supermarket 题目描述 有一个商店有许多批货,每一批货又有N(0<=N<=\(10^4\))个商品,同时每一样商品都有收益Pi ,和过期时间Di (1<=Pi,Di&l ...
- Different Integers 牛客多校第一场只会签到题
Given a sequence of integers a1, a2, ..., an and q pairs of integers (l1, r1), (l2, r2), ..., (lq, r ...
- LwIP - raw/callback API、协议栈API(sequential API)、BSD API(或者说 SOCKET API)
1.使用raw/callback API编程,用户编程的方法是向内核注册各种自定义的回调函数,回调函数是与内核实现交换的唯一方式. recv_udp, accept_function, sent_tc ...
- hive 动态分区(Dynamic Partition)异常处理
Changing Hive Dynamic Partition Limits Symptoms: Hive enforces limits on the number of dynamic parti ...
- DIV的变高与变宽
代码: <!DOCTYPE HTML><html><head> <meta charset="utf-8"> <title&g ...
- Linux命令的返回值
转摘自:http://hi.baidu.com/suchshow/item/230255b6caab369218469732 在 Linux 下,不管你是启动一个桌面程序也好,还是在控制台下运行命令, ...
- MUI -- plus初始化原理及plus is not defined,mui is not defined 错误汇总
不要在没有plus和mui的环境下调用相关API 普通浏览器里没有plus环境,只有HBuilder真机运行和打包后才能运行plus api. 在普通浏览器里运行时plus api时控制台必然会输出p ...
- 之江学院第0届校赛 qwb与支教 (容斥公式)
description qwb同时也是是之江学院的志愿者,暑期要前往周边地区支教,为了提高小学生的数学水平.她把小学生排成一排,从左至右从1开始依次往上报数. 玩完一轮后,他发现这个游戏太简单了.于是 ...