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文件 这里的引号是 ...
随机推荐
- 附录A培训实习生-面向对象基础方法重载(3)
就上一篇代码而言,你如果写Cat cat = new Cat();会直接报错错误 : 1 “Cat”方法没有采用“0”个参数的重载 E:\大话设计模式学习\BigDesignPattern ...
- P2127 序列排序
题目描述 小C有一个N个数的整数序列,这个序列的中的数两两不同.小C每次可以交换序列中的任意两个数,代价为这两个数之和.小C希望将整个序列升序排序,问小C需要的最小代价是多少? 输入输出格式 输入格式 ...
- 2017博普杯 东北大学邀请赛(B. Drink too much water)(贪心+树链剖分)
题目地址:https://oj.neu.edu.cn/problem/1204 题目大意: 其实就是树上的线段覆盖, 给出一棵n个结点的树,然后给出树上的一些路径进行覆盖,然后要求选取最少的点,能够把 ...
- 【题解】【CF Round #278】Tourists
圆方树第二题…… 图中询问的是指定两点之间简单路径上点的最小权值.若我们建出圆方树,圆点的权值为自身权值,方点的权值为所连接的圆点的权值最小值(即点双连通分量中的最小权值).我们可以发现其实就是这两点 ...
- [LOJ#2553][CTSC2018]暴力写挂
[LOJ#2553][CTSC2018]暴力写挂 试题描述 temporaryDO 是一个很菜的 OIer .在 4 月,他在省队选拔赛的考场上见到了<林克卡特树>一题,其中 \(k = ...
- jsp电子商务购物车之四 数据库存储篇
为了方便用户下次登录,仍然可以看到自己的购物车内容,所以,需要在数据库存储相应的购物车项目,本处增加购物车项表;uid和bid是复合主键. package com.cart.entity; //购物车 ...
- 【BZOJ 3669】 [Noi2014]魔法森林 LCT维护动态最小生成树
这道题看题意是在求一个二维最小瓶颈路,唯一可行方案就是枚举一维在这一维满足的条件下使另一维最小,那么我们就把第一维排序利用A小的边在A大的情况下仍成立来动态加边维护最小生成树. #include &l ...
- ext radiogroup如何取值和设值
var radios = Ext.create('Ext.form.Panel', { title: 'RadioGroup Example', width: 300, height: 125, bo ...
- Codeforces Round #524 (Div. 2) B. Margarite and the best present
B. Margarite and the best present 题目链接:https://codeforces.com/contest/1080/problem/B 题意: 给出一个数列:an=( ...
- jquery中:input和input的区别
:input表示选择表单中的input,select,textarea,button元素, input仅仅选择input元素. <button>和<input type=" ...