-
GDB print和display命令 查视变量的值
所属栏目:[语言] 日期:2022-07-12 热度:178
前面章节中提到,使用 GDB 调试程序,最常用的方法是:单步调试或者断点调试程序,期间通过查看某个变量或者表达式的值,判断当前程序的执行过程是否正确,不断缩小异常或 Bug 位于代码中的范围,最终找到并修复。 对于在调试期间查看某个变量或表达式的值[详细]
-
GDB条件断点 condition命令 解说
所属栏目:[语言] 日期:2022-07-12 热度:179
前面章节给大家介绍了 GDB 调试器中普通断点、观察断点以及捕捉断点的功能和用法。其中值得一提的是,对于普通断点的建立,可以使用如下格式的 break 命令: (gdb) break ... if cond ... 参数用于指定生成断点的具体位置;cond 参数用于代指某个表达式。[详细]
-
GDB单步调节程序
所属栏目:[语言] 日期:2022-07-12 热度:71
《调用GDB调试器的几种方式》一节中提到,借助 next 命令可以控制 GDB 单步执行程序。所谓单步调试,就是通过一行一行的执行程序,观察整个程序的执行流程,进而尝试发现一些存在的异常或者 Bug。 根据实际场景的需要,GDB 调试器共提供了 3 种可实现单步[详细]
-
Makefile文件是哪些
所属栏目:[语言] 日期:2022-07-12 热度:118
我们教程主要是讲的是 Makefile 。很多 Linux(Unix) 做开发的初学者不了解 Makefile 是什么,甚至大部分 Windows 开发工程师对 Makefile 都特别陌生。这个其实很正常,如果你是在 Windows 下作开发的话不需要去考虑这个问题,因为 Windows 下的集成开发环[详细]
-
GDB catch命令 创立捕捉断点
所属栏目:[语言] 日期:2022-07-12 热度:122
要知道,GDB 调试器支持在被调试程序中打 3 种断点,分别为普通断点、观察断点和捕捉断点,其中普通断点用 break 命令建立(可阅读《GDB break》一节),观察断点用 watch 命令建立(可阅读《GDB watch》一节),本节将讲解如何使用 catch 命令建立捕捉断[详细]
-
Makefile文件中包括哪些规则
所属栏目:[语言] 日期:2022-07-11 热度:178
想要书写一个完整的 Makefile文件,需要了解 Makefile 的相关的书写规则。我们已经知道了 Makefile 描述的是文件编译的相关规则,它的规则主要是两个部分组成,分别是依赖的关系和执行的命令,其结构如下所示: targets : prerequisites command 或者是 ta[详细]
-
Makefile的工作进程
所属栏目:[语言] 日期:2022-07-11 热度:174
简单了解一下 Makefile 书写规则之后,再来深入研究一下 Makefile 的是怎样工作的?当我们在执行 make 条命令的时候,make 就会去当前文件下找要执行的编译规则,也就是 Makefile 文件。我们编写 Makefile 的时可以使用的文件的名称 GNUmakefile 、makefil[详细]
-
Makefile通配符的利用
所属栏目:[语言] 日期:2022-07-11 热度:128
Makefile 是可以使用 shell 命令的,所以 shell 支持的通配符在 Makefile 中也是同样适用的。 shell 中使用的通配符有:*,?,[...]。具体看一下这些通配符的表示含义和具体的使用方法。 通配符 使用说明 * 匹配0个或者是任意个字符 ? 匹配任意一个字符 [[详细]
-
Makefile变量的定义和运用
所属栏目:[语言] 日期:2022-07-11 热度:200
变量对于我们来说是不陌生的,在学习各种编程语言时会经常用到。就拿C语言来说,变量的使用是十分常见的,变量可以用来保存一个值或者是使用变量进行运算操作。Makefile 中的变量也是这样,我们可以利用它来表示某些多处使用而又可能发生变化的内容,不仅[详细]
-
Makefile自主化变量
所属栏目:[语言] 日期:2022-07-11 热度:58
关于自动化变量可以理解为由 Makefile 自动产生的变量。在模式规则中,规则的目标和依赖的文件名代表了一类的文件。规则的命令是对所有这一类文件的描述。我们在 Makefile 中描述规则时,依赖文件和目标文件是变动的,显然在命令中不能出现具体的文件名称[详细]
-
Makefile目标文件搜寻 VPATH和vpath
所属栏目:[语言] 日期:2022-07-11 热度:57
我们都知道一个工程文件中的源文件有很多,并且存放的位置可能不相同(工程中的文件会被放到不同的目录下),所以按照之前的方式去编写 Makefile 会有问题。 我们之前列举的例子,所有的源文件基本上都是存放在与 Makefile 相同的目录下。只要依赖的文件存[详细]
-
Makefile路径搜索使用示例
所属栏目:[语言] 日期:2022-07-11 热度:77
我们了解了一下路径搜索的使用方式,我们再来看一下具体的使用方法。 为了体验实例的效果的更加明显,我们按照源代码树的布局来放置文件。我们把源代码放置在src目录下,包含的文件文件是:list1.c、list2.c、main.c 文件,我们把头文件包含在 include 的[详细]
-
Makefile隐含准则
所属栏目:[语言] 日期:2022-07-11 热度:133
这个章节讲述的是 Makefile 的隐含规则,所谓的隐含规则就是需要我们做出具体的操作,系统自动完成。编写 Makefile 的时候,可以使用隐含规则来简化Makefile 文件编写。 实例: test:test.o gcc -o test test.o test.o:test.c 我们可以在 Makefile 中这样[详细]
-
Makefile ifeq ifneq ifdef和ifndef 条件判别
所属栏目:[语言] 日期:2022-07-11 热度:147
日常使用 Makefile 编译文件时,可能会遇到需要分条件执行的情况,比如在一个工程文件中,可编译的源文件很多,但是它们的类型是不相同的,所以编译文件使用的编译器也是不同的。手动编译去操作文件显然是不可行的(每个文件编译时需要注意的事项很多),[详细]
-
Makefile伪标准
所属栏目:[语言] 日期:2022-07-11 热度:141
这一个章节我们主要讲的是 Makefile 中的伪目标。所谓的伪目标可以这样来理解,它并不会创建目标文件,只是想去执行这个目标下面的命令。伪目标的存在可以帮助我们找到命令并执行。 使用伪目标有两点原因: 避免我们的 Makefile 中定义的只执行的命令的目[详细]
-
Java使用Lambda表达式遍历Collection集合
所属栏目:[语言] 日期:2022-07-11 热度:80
Java 8 为 Iterable 接口新增了一个 forEach(Consumer action) 默认方法,该方法所需参数的类型是一个函数式接口,而 Iterable 接口是 Collection 接口的父接口,因此 Collection 集合也可直接调用该方法。 当程序调用 Iterable 的 forEach(Consumer actio[详细]
-
Java Iterator 迭代器 遍历Collection集合元素
所属栏目:[语言] 日期:2022-07-11 热度:144
Iterator(迭代器)是一个接口,它的作用就是遍历容器的所有元素,也是 Java 集合框架的成员,但它与 Collection 和 Map 系列的集合不一样,Collection 和 Map 系列集合主要用于盛装其他对象,而 Iterator 则主要用于遍历(即迭代访问)Collection 集合中[详细]
-
Java Set集合 HashSet和TreeSet类
所属栏目:[语言] 日期:2022-07-11 热度:127
Set 集合类似于一个罐子,程序可以依次把多个对象丢进Set 集合,而 Set 集合通常不能记住元素的添加顺序。也就是说 Set 集合中的对象不按特定的方式排序,只是简单地把对象加入集合。Set 集合中不能包含重复的对象,并且最多只允许包含一个 null 元素。 Se[详细]
-
Java的异常跟踪栈
所属栏目:[语言] 日期:2022-07-11 热度:197
异常对象的 printStackTrace() 方法用于打印异常的跟踪栈信息,根据 printStackTrace() 方法的输出结果,开发者可以找到异常的源头,并跟踪到异常一路触发的过程。 看下面用于测试 printStackTrace 的例子程序。 class SelfException extends RuntimeExcep[详细]
-
Java Collection接口详解
所属栏目:[语言] 日期:2022-07-11 热度:83
Collection 接口是 List、Set 和 Queue 接口的父接口,通常情况下不被直接使用。Collection 接口定义了一些通用的方法,通过这些方法可以实现对集合的基本操作。定义的方法既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合。 本节将介绍 Collectio[详细]
-
Java.util.logging JDK自带录入日志类
所属栏目:[语言] 日期:2022-07-11 热度:174
每个初学者都很熟悉在有问题的代码中使用 System.out.println 方法在控制台打印消息,来帮助观察程序运行的操作过程。如果你使用 System.out.println 方法,一旦发现问题的根源,就要将这些语句从代码中删去。如果接下来又出现了问题,就需要再插入几个调[详细]
-
GCC -S项目 编译非汇编文件
所属栏目:[语言] 日期:2022-07-11 热度:162
我们知道,从 C、C++源代码生成可执行文件需要经历 4 个过程,分别为预处理、编译、汇编和链接。其中,《GCC -E选项:对源程序做预处理操作》一节以 demo.c 源程序文件为例,演示了如何使用 GCC 执行预处理操作,并生成了相应的 demo.i 预处理文件。 [root[详细]
-
GCC -E选项 对源程序做预处理运作
所属栏目:[语言] 日期:2022-07-11 热度:175
通过前面的学习我们知道,根据源代码文件后缀名的不同,gcc 指令可以自行判断出该源程序是由哪种编程语言编写,从而完成由源代码到可执行代码的转换工作。考虑到本教程主要讲解如何使用 gcc 指令运行 C/C++ 程序,因此本节就以 C 语言程序为例(如下所示)[详细]
-
GCC编译C C++程序 一步做成
所属栏目:[语言] 日期:2022-07-11 热度:129
通过前面章节的学习我们知道,GCC 编译器并未提供给用户可用鼠标点击的界面窗口,要想调用 GCC 编译器编译 C 或者 C++ 程序,只能通过执行相应的 gcc 或者 g++ 指令。本节将重点给大家讲解如何编写 gcc 或者 g++ 指令来编译 C、C++ 程序。 注意,在前面的[详细]
-
GCC -std编译目标一览表
所属栏目:[语言] 日期:2022-07-11 热度:142
要知道,任何一门编程语言都有相关的组织和团体在不停的维护和更新。原因很简单,时代在发展,编程语言如果停滞不前,最终就会被淘汰。 以 C 语言为例,发展至今该编程语言已经迭代了诸多个版本,例如 C89(偶尔又称为 C90)、C94(C89 的修订版)、C99、C[详细]