http://blog.chinaunix.net/uid-24103300-id-108248.html

一、Linux程序gcc编译步骤:

Gcc编译过程主要的4个阶段:

l 预处理阶段,完成宏定义和include文件展开等工作;(.i)

l 根据编译参数进行不同程度的优化,编译成汇编代码(.s.S)

l 用汇编器把汇编代码进一步生成目标代码(.o)

l 用连接器把生成的目标代码和系统或用户提供的库连接起来,生成可执行文件

格式:

l gcc -E test.c//预处理阶段

l Gcc -S test.c//编译阶段

l Gcc -c test.c//汇编阶段

l Gcc -o test test.c//链接阶段

二、Linux程序gdb调试步骤:

Gdb的功能:

l 设置断点

l 监视程序变量的值

l 程序的单步执行

l 显示、修改变量的值

l 显示、修改寄存器

l 查看程序的堆栈情况

l 远程调试

Gdb调试过程:

1、程序经过预处理后,即进入编译阶段,进入编译阶段,首先声明编译:

2、格式:gdb -o test test.c -g

3、进入编译:gdb test

4、显示需要编译调试的源程序:l(list)//list filename

5、设置断点:b(break)行号

6、查看设置的断点:info b

7、运行调试程序:run

8、跳到下一个断点:c(continue)

9、单步运行的话使用:n(next)/s(step into)跳到函数体 //区别在与:next执行函数体,而step不执行函数体

10、调试过程中查看某个变量的变化:print i (每次都要手动设置)//display i(设置一次一直尾随,直到用“undisplay 变量标号” 停止)

11、退出当前的调试使用finish 跳出函数

12、清楚断点 clear 行号

13、Delete 断点信息序号// 删除所有断点或设置的要删除的断点

14、退出调试 q

15、b  num  if  i==20 设置断点的触发条件

16、condition num i==50 改变断点的触发条件

gcc编译与gdb调试简要步骤的更多相关文章

  1. Linux——【转】gcc编译与gdb调试简要步骤

    原文:gcc编译与gdb调试简要步骤 一.Linux程序gcc编译步骤: Gcc编译过程主要的4个阶段: l 预处理阶段,完成宏定义和include文件展开等工作:(.i) l 根据编译参数进行不同程 ...

  2. gcc编译, gdb调试, makefile写法

    //test.c: #include <stdio.h> int main(void) { printf("hello world!"); return 0; } == ...

  3. 转 C编译: 使用gdb调试

    C编译: 使用gdb调试   作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! gdb是the GNU Debugger的简称.它是 ...

  4. GCC编译器和GDB调试器常用选项

    http://blog.csdn.net/u014328976/article/details/46745349 GCC编译器 gcc hello.c -o hello                 ...

  5. Linux gcc/g++下GDB调试及其调试脚本的使用

    GDB调试及其调试脚本的使用返回脚本百事通一.GDB调试 1.1. GDB 概述 GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB ...

  6. 修改,编译,GDB调试openjdk8源码(docker环境下)

    在上一章<在docker上编译openjdk8>里,我们在docker容器内成功编译了openjdk8的源码,有没有读者朋友产生过这个念头:"能不能修改openjdk源码,构建一 ...

  7. GCC编译源代码的四个步骤【转】

    GCC编译C源代码有四个步骤:预处理---->编译---->汇编---->链接. 可以利用GCC的参数来控制执行的过程,这样就可以更深入的了解编译C程序的过程. 下面将通过对一个程序 ...

  8. 使用gcc -g编译,gdb调试时仍然存在“no debug symbols found”的错误

    今天为调试一段代码,使用gcc将程序用-g选项重新编译.但是使用gdb进行debug时,仍然出现“no debug symbols found”的错误.仔细检查了一下Makefile,原来后面定义的连 ...

  9. C编译: 使用gdb调试

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! gdb是the GNU Debugger的简称.它是一款UNIX平台的调试器(de ...

随机推荐

  1. Matlab绘图详解

    Matlab绘图 强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数.此外,M ...

  2. 虚拟机VirtualBox 5.1.0|VBOX

    Oracle VM VirtualBox是一款免费.开源的虚拟机软件,现属于Oracle旗下产品.可以安装Windows.Linux.IBM OS/2.Solaris.BSD等操作系统,具有远端桌面协 ...

  3. Java--剑指offer(8)

    36.输入两个链表,找出它们的第一个公共结点. 解题思路:这里主要是把两个链表的节点都放入两个栈中,这样就可以按照出栈的方式来比较节点,因为单链表只要是有相同的节点,那么之后的节点也都是一样的,所以如 ...

  4. elasticsearch installation guide

    UBUNTU 14.04 LTS 安装 elasticseach同步MYSQL表并实现中文搜索 ==================================================== ...

  5. [转]响应式WEB设计学习(3)—如何改善移动设备网页的性能

    原文地址:http://www.jb51.net/web/70362.html 前言 移动设备由于受到带宽.处理器运算速度的限制,因而对网页的性能有更高的要求.究竟是网页中的何种元素拉低了网页在移动设 ...

  6. phpwind9.0模板制作教程——制作论坛风格

    由于论坛模板机制和门户等模板机制不同,所以今天我就先重点讲讲论坛模板制作的大概过程. 一.先来熟悉下phpwind9.0的论坛模板机制. 其实phpwind9.0的模板机制和discuzx2.5差不多 ...

  7. 【POJ 2528】Mayor’s posters(线段树+离散化)

    题目 给定每张海报的覆盖区间,按顺序覆盖后,最后有几张海报没有被其他海报完全覆盖.离散化处理完区间端点,排序后再给相差大于1的相邻端点之间再加一个点,再排序.线段树,tree[i]表示节点i对应区间是 ...

  8. JAVA中AJAX的使用

    AJAX<%@ page language="java" import="java.util.*" pageEncoding="UTF-8&qu ...

  9. UIView的autoresizingMask和autoresizesSubviews属性的剖析

    UIVIew的autoresizingMask和autoresizesSubviews属性的剖析 autoresizingMask是为了iPad开发中横竖屏适配而降生的,他只能约束父子控件之间的关系. ...

  10. Segment-Based stereo matching

    首先代码实现是根据"Segment-Based Stereo Matching Using Belief Propogation and Self-Adapting Dissimilarit ...