热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

gcc编译调式选项介绍

前言这几天使用gcc编译的程序,gdb调式的时候,有些外部函数无法跟踪,进不去。后来发现是因为gcc编译选项没有设置正确,现

前言

    这几天使用gcc编译的程序,gdb调式的时候,有些外部函数无法跟踪,进不去。 后来发现是因为gcc编译选项没有设置正确,现在找找资料,记录一下。



gcc参数选项


 -g选项(-glevle)生成调式信息,gnu调试器可以利用这个信息。可以在-g后面指定level生成调式信息的数量。level默认是2. (即-g等价于-g2)。

            level 为0,不生成任何调式信息。因此,-g0将直接否定了-g选项,等于没有开启-g选项。

            level 为1,生成最低限度的调式信息,足够对程序进行回溯跟踪,回溯跟踪指的是监视程序在运行过程中的函数调用历史,另外还包含函数描述信息、外部变量、行号表,但是不包含局部变量。

           level 为2,此时产生的调试信息包括扩展的符号表、行号、局部或外部变量信息。

           level 为3,包含级别2中的所有调试信息,以及源代码中定义的宏。

另外,上面-g的介绍同样适用于下列的选项,只是编译的环境不一样而已。
  -glevel
  -ggdblevel
  -gstabslevel
  -gcofflevel
  -gxcofflevel
  -gvmslevel

      

 -O选项:  优化编译信息 。可以在-O后面指定levell表示优化的级别。如果不指定level,默认是1(即-O等价于-O1)

           level为0:不做任何优化,这是默认的编译选项。(没有指定该选项的时候也是这种情况)

           level为1或者不指定(即-O1或者-O): 对程序做部分编译优化,对于大函数,优化编译占用稍微多的时间和相当大的内存。使用本项优化,编译器会尝试减小生成代码的尺寸,以及缩短执行时间,但并不执行需要占用大量编译时间的优化。

           level2:  是比O1更高级的选项,进行更多的优化。Gcc将执行几乎所有的不包含时间和空间折中的优化。当设置O2选项时,编译器并不进行循环打开()loop unrolling以及函数内联。与O1比较而言,O2优化增加了编译时间的基础上,提高了生成代码的执行效率。

           level为3:比O2更进一步的进行优化。

对优化选项进一步了解,可以参考gcc官网文档,或者:对gcc -O选项有教详细介绍


-Wall选项: 开启所有的警告信息。(-w 不生成任何警告信息)。




未完,持续更新 .....   


推荐阅读
author-avatar
巡山小妖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有