首先来介绍一下gcc的选项:

其他选项都为常用编译选项,在这里介绍一下优化功能:

  优化编译时使用选项:

    -O:可以告诉gcc同时减小代码的长度和执行时间,其效果等价于-O1,在这一级别上能够进行的优化类型虽然取决于目标处理器,但一般都会包括线程跳转和延迟退栈两种优化。

    -O2:可以告诉gcc除了完成所有-O1级别的优化之外,同时还要进行一些额外的调整工作,如处理器指令调度等。

    -O3:可以告诉gcc除了完成-O2所有级别优化外,话包括循环展开和其他一些与处理器特性相关的优化工作。

    通常来说:数字优化的等级越高,同时也就意味着程序的运行速度越快,-O2一般是一个比较理想的选项,它在优化长度,编译时间和代码大小之间,取得了一个比较理想的平衡点。

    注意:使用优化的时候一定注意程序中防止编译器过度优化代码,过度的优化代码时,和会出现一些逻辑上的问题。

gcc的调试——gdb:

  gcc在编译时不会将调试符号插入到生成的二进制代码中,因为这样会增加可执行文件的大小。

  gdb的常用命令:

      回车键:执行上一次命令。

       info break:查看断点信息。

       finish:退出函数

  为什么调试的时候需要编译选项中添加 -g ?

    -g:

    该选项可以利用操作系统的“原生格式(native format)”生成调试信息。GDB 可以直接利用这个信息,其它调试器也可以使用这个调试信息,

    如果没有-g,你将看不见程序的函数名、变量名,所代替的全是运行时的内存地址

    -ggdb

    使 GCC 为 GDB 生成专用的更为丰富的调试信息,但是,此时就不能用其他的调试器来进行调试了 (如 ddx)

  使用gdb调试的时候需要在编译的时候加入命令符:-g

  • gcc  -g main.c -o main
  • 这样才能生成一个可以调试的可执行文件main
  • 接下来输入调试命令:
  • gdb mian
  • 进入gdb调试中,输入命令:run 运行起来
  • 之后就会提示你相应的错误。
  • (还可以使用其他命令,如:break,给程序打断点;print,查看具体的变量值等等)

  gdb主要提供的功能:

    设置断点(断点可以是条件表达),使程序在指定的代码行上暂停执行,便于调试;

    单步执行程序,便于观察;

    查看程序中变量值的变化;

    动态改变程序的执行环境;

    分析崩溃程序产生的core文件;

 

  

转载于:https://www.cnblogs.com/cuckoo-/p/10740281.html

gcc的调试调研——gdb相关推荐

  1. Day 3 Linux(目录篇 、文件操作篇 、压缩解压相关命令, 编辑器vi 、编译器gcc 、调试器gdb、 makefile工程管理器初学)

    一.目录篇: 1.文件处理命令:cp 英文原意:copy 语法:cp -rp[源文件或目录][目的目录] 源文件可以同时是多个,即同时复制到多个文件 -r 复制目录 -p保留文件属性,比如文件创建时间 ...

  2. 《Linux C编程从入门到精通》》一2.4 Linux中的调试环境gdb

    本节书摘来自异步社区<<Linux C编程从入门到精通>>一书中的第2章,第2.4节,作者 宋磊 , 程钢,更多章节内容可以访问云栖社区"异步社区"公众号查 ...

  3. Linux下C语言的调试器 Gdb

    调试是所有程序员都会面临的问题. 如何提高程序员的调试效率, 更好更快地定位程序中的问题从而加快程序开发的进度, 是大家共同面对的问题. 就如读者熟知的Windwos下的一些调试工具, 如VC自带的设 ...

  4. gcc、 binutils、gdb

    目录 1.gcc编译器 2.Binutils工具集 3.调试利器GDB 1.gcc编译器 GCC与gcc的不同 GNU计划:  GNU's Not Unix,Unix的收费所以模仿Unix界面和使用方 ...

  5. 【Linux】-- 开发工具yum、vim、gcc、g++、gdb、make、makefile使用介绍

    目录 一.yum 1.了解yum (1)RPM (2)yum 2.yum使用 (1)查看软件包 (2)安装软件 (3)卸载软件 二.Linux编辑器-vim 1. vim概念 (1)命令模式 (2)插 ...

  6. 【Linux】Linux调试器--gdb详解

    Linux环境基础开发工具使用(二) 一.Linux调试器-gdb使用 1.背景 2.使用 二.Linux项目自动化构建工具-make/Makefile 1.背景 2.依赖关系和依赖方法 3.原理 4 ...

  7. alin的学习之路(Linux系统编程:三)(vim,gcc,库,gdb)

    alin的学习之路(Linux系统编程:三)(vim,gcc,库,gdb) 1.vim的使用 vim有三种模式:命令模式,末行模式,编辑模式 光标的移动[命令模式] h 向左 ,j 向下,k 向上,l ...

  8. 【转】在CentOS 6.4中编译安装GCC 4.8.1 + GDB 7.6.1

    2019独角兽企业重金招聘Python工程师标准>>> 在CentOS 6.4中编译安装GCC 4.8.1 + GDB 7.6.1  一.编译安装gcc 4.8.1 1. 安装gcc ...

  9. [pwn]调试:gdb+pwndbg食用指南

    https://blog.csdn.net/Breeze_CAT/article/details/103789233 gdb+pwndbg组合拳 文章目录 gdb+pwndbg组合拳 前言及安装 基本 ...

最新文章

  1. 用ASP.NET上传大文件
  2. python使用statsmodels包中的tsaplots函数可视化时间序列数据所有滞后位置个数(级别)的自相关性(plot the autocorrelation function)
  3. EOSRAM那么火,BANCOR协议白皮书了解一下?
  4. 弦截法c语言程序,高数介质定理——弦截法求根代码实践(C语言)
  5. python可变参数和关键字参数位置_python的位置参数、默认参数、关键字参数、可变参数区别...
  6. spring+mybatis整合读取不了配置文件
  7. 西澳大学商科专业排名_澳洲西澳大学优势专业排名多少
  8. 将Activity启动模式说的明白一点
  9. git本地分支删除,代码没了!怎么恢复!亲测有效(吓死人了)
  10. java复习web篇——servlet
  11. 低代码再掀炒作热潮?
  12. hibernate DetachedCriteria实现多表关联查询createAlias的使用
  13. 深入理解计算机系统(1)--hello world程序的生命周期
  14. python库-密码学库pynacl
  15. 线性规划问题及单纯形法-目标函数值极小大M法
  16. 读书笔记 - 《六神磊磊读唐诗》
  17. Github骚操作绑定中国+86手机号码实现两步验证
  18. 大型网站架构技术方案集锦[转]
  19. git stash暂存修改
  20. onedrive php映射,Microsoft OneDrive空全局账号自建API(Rclone、OneManager-php)

热门文章

  1. python 装饰器 参数-如何将额外的参数传递给Python装饰器?
  2. python实现文件下载-python实现文件下载的方法总结
  3. python代码示例下载-43个Python代码打包下载
  4. 学python是看书还是看视频-学 Python 你觉得是看书还是看视频?
  5. python真的超过java了吗-JAVA会被Python超越成为世界上第一大编程语言吗?
  6. python程序实例电话本-Python基于递归实现电话号码映射功能示例
  7. python编程入门经典教程-python编程入门经典
  8. LeetCode374 猜数字大小 (二分法)
  9. 爬墙技术哪家强,师范找锡伟
  10. php根据修改时间删除指定目录下文件