一起talk GCC吧(第六回:GCC调试)

各位看官们,大家好,上一回咱们说的是GCC优化相关的内容。这一回咱们说说如何使用GCC进行调试,

闲话休提,言归正转。让我们一起talk GCC吧!

看官们,大家都知道,人们写代码时,偶尔也会出错。有的时候造成了编译错误,有的时候造成了逻辑错

误。当然了,有经验的程序员不会造成编译错误这种低级错误,但是逻辑错误,或多或少总会有。程序出

错了,怎么办?肯定是修改错误了,哈哈,这还用说吗。错误都是在人不知道的情况下造成的,所以要想

修改错误,特别是逻辑错误,还是有些困难的。不过看官们不要着急。GCC会提供调试功能,方便大家找

出程序中的错误。GCC的调试功能需要和GDB配合起来才能使用。关于GDB的内容,我们以后会说,大家现

在只要明白,GCC会帮助大家找到程序中的错误。

GCC的调试功能,主要是在编译期间把调试信息写入到编译生成的目标文件中,然后GDB会使用这样调试信

息进行调试。GCC的调试功能也是通过选项实现的,选项g的用法和选项O的用法完全一样。如果大家还记

得咱们在上一回中说过的选项O。那么理解选项g的用法就相当容易了。不论如何,咱们先举个例子:

gcc -gn file.c -o f.o

例子中的n是从1到3之间的数字,数字越大增加的调试信息越多,如果不加数字,n的默认值为2.,也就是说

使用g2进行调试。因为GCC需要在目标文件中写入调试信息,所以会增加目标文件的大小。这也算是调试功

能的一个负面影响吧。鉴于这个原因,默认情况下,GCC不会在编译生成的目标文件中添加调试信息。在我

们使用GCC编译程序的时候,通常来说g2就够用了,这样既可以在目标程序中增加调试信息,又不会过多地

增加目标程序的大小。

看官们,关于GCC的内容,今天咱们就说这些。欲知后事如何,且听下回分解!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 14:41:13

一起talk GCC吧(第六回:GCC调试)的相关文章

第六回 煤渣场对垒藏高人 小饭馆煮面论英雄[林大帅作品连载]

第六回 煤渣场对垒藏高人 小饭馆煮面论英雄    诗曰: 古道热肠情谊浓,铁砚豪杰事已空. 今宵何似煮酒夜,五魁声里忆峥嵘.        却说林二二人前往蹴鞠场,当日石头路旧院比不得擢英砺青宽敞,这场也只饭堂前方寸之地.日后林二有幸在哲理场上驰骋,自不可同日而语.不过今日难得见小谢兴致不错,自是一番热情相陪.林二方进文会时,每日只知街上晃荡,书店里耽搁.不过也敬这小谢治学功夫,他也常劝林二,多做些文章才是.平日里也不忘邀林二探讨点学问,或彼此切磋,故而甚相契重.但这蹴鞠场上,林二却是好手,不说

JVM【第六回】:【OutOfMemoryError异常之虚拟机栈和本地方法栈溢出】

由于在HotSpot虚拟机中并不区分虚拟机栈和本地方法栈,因此对于HotSpot来说,-Xoss参数(设置本地方法栈大小)虽然存在,但实际上是无效的,栈容量只由-Xss参数设定.关于虚拟机栈和本地方法栈,在Java规范中描述了两种异常: 如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异常. 如果虚拟机在扩展栈时无法申请到足够的内存空间,则抛出OutOfMemoryError异常. 在下面的代码中,如果将范围限制于单线程中的操作,尝试下面两种方法均无法让

第六课 GDB调试 (上)

序言: 初学者经过学习前面的Makefile知识,信心满满,内心觉得应该要好好学习不单掌握语言的编写,也要学会相对应的工具调高开发效率.有时我们写出来的代码经过执行结果却跟我们预期不一样那怎么办呢,这个时候就要调试了.说到调试有经验的开发童鞋知道在windows下游大名鼎鼎的VS集成平台,那么在linux下呢,特别是编写C.C++有什么工具可以方便我们调试呢,这里我给大家推荐的就是GDB,它也是GNU的debugger,专门为调试而生的. 知识点: gdb的大致分为以下功能: 1.启动程序: 2

Web开发者的六个代码调试平台

代码调试平台是Web开发者进行开发.测试.分享.协作和交流的网络应用,它们支持实时的编辑.预览HTML.CSS和JavaScript的客户端代码.这些代码调试平台最值得称道的地方在于,它们中的大多数都是免费的,你可以很容易的以学习或者调试程序为目的与他人分享你的工作. 就个人而言,这些web应用程序在日常工作中给我带来了不小的帮助.每当在使用JavaScript或者CSS编程碰到瓶颈的时候,我可以在代码调试平台上分享自己的代码并邀请其他的开发者朋友来解决.这种模式的有趣性和互动性对于新手的学习有

Android 浏览器的研究(六)--- ADT调试通过Intent启动的Activity

今天遇到一个问题,在音乐应用里长按一个歌曲,在弹出菜单中选择搜索,在搜索选择框中选择浏览器.正常情况下应该打开浏览器并且使用默认的搜索引擎启动搜索,但是现在浏览器搜索界面并没有打开.首先想到的是打开浏览器工程,在相关位置设置断点,启动调试,发现一切处理正常,浏览器界面打开并正常启动了搜索过程.原来问题只发生在浏览器进程尚未启动,音乐应用使用Intent启动浏览器来进行搜索的情况下.这里分享一下这种情况下如何启动调试分析. 首先,该应用是其他应用通过Intent启动的,而我们需要调试它.在C/C+

GCC学习 (六)如何编写makefile

相等条件判断 条件判断关键字为ifeq ifeq(条件,1) 命令1 else 命令2 endif 表示条件满足的时候运行命令1,否则命令2 被执行 定义条件判断 关键字ifdef ifndf ifdef 判断 变量是否被定义过 , 若被定义过 , 是否是有值的 , 被定义过且不为空的时候 执行下面的命令 函数 使用方法 ---- $(函数名,参数,...) ---- 字符串函数 1. subst 字符串替换 2. patsubst 带模式的字符串替换 3. strip 去除空格 4. ?nds

一起talk GDB吧(第六回:GDB改动程序执行环境)

各位看官们,大家好,上一回中我们说的是GDB查看信息的功能,而且说了怎样使用GDB查看程序执行时的 信息.这一回中,我们继续介绍GDB的调试功能:改动程序执行环境.当然了,我们也会介绍怎样使用GDB 改动程序执行环境. 闲话休提.言归正转. 让我们一起talk GDB吧! 大家都知道程序执行时须要一个执行的环境.比方从系统中分配内存,让程序读取一些数据等等.我们接 下来说一说,怎样改动程序的执行环境.这样能够让程序依照我们我要求来执行.在改动程序执行环境中 最经常使用的是改动变量的值. 作为一款

一起talk GDB吧(第六回:GDB修改程序运行环境)

各位看官们,大家好,上一回中我们说的是GDB查看信息的功能,并且说了如何使用GDB查看程序运行时的 信息.这一回中,我们继续介绍GDB的调试功能:修改程序运行环境.当然了,我们也会介绍如何使用GDB 修改程序运行环境.闲话休提,言归正转.让我们一起talk GDB吧! 大家都知道程序运行时需要一个运行的环境,比如从系统中分配内存,让程序读取一些数据等等.我们接 下来说一说,如何修改程序的运行环境,这样可以让程序按照我们我要求来运行.在修改程序运行环境中 最常用的是修改变量的值. 作为一款优秀的调

一起talk C栗子吧(第一百五十六回:C语言实例--基于AF_UNIX域的流套接字通信)

各位看官们,大家好,上一回中咱们说的获取socket通信地址的例子,这一回咱们说的例子是:基于AF_UNIX域的流套接字通信 .闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在前面章回中介绍了套接字的通信过程以及套接字的的细节,总感觉还缺少些什么,一时还真是想不起来.这好比我们有了食谱也有了食材,那么我们就可以做一道美味的佳肴了.啊!有了.一提到美味的佳肴,灵感就来了.我们缺少的是对套接字的综合演练,也就是把前面章回中知识串在一起,然后举一个综合使用套接字知识进行套接字通信的例