热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

3.gdb调试

gcc-g源文件-o目标文件-g产生可以调试的目标文件gdbmain2.out开始调试程序l列出程序代码break行数打断点start开始调试p变量查看变量当前值࿰

gcc -g 源文件 -o 目标文件 // -g 产生可以调试的目标文件

这里写图片描述

gdb main2.out // 开始调试程序
l // 列出程序代码
break 行数 // 打断点
start // 开始调试

这里写图片描述
这里写图片描述

p 变量 // 查看变量当前值,等价于 print 变量
n // 下一步
s // 步入
bt //查看函数堆栈

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

这里写图片描述

x/3d 开始的地址 //显示3个变量地址


Linux C 标准头文件一般存放在 /usr/include
gcc -I /usr/openwin/include aa.c // -I可以包含非标准位置的头文件


库是一组预先编译好的函数的集合。一般存放在 /lib和 /usr/lib 目录中。
库文件的名字总是以 lib 开头,随后的部分指出这是什么库(例如,c代表C语言库,m代表数学库)。
文件名的最后部分以 . 开始,然后给出库文件的类型:
.a 代表传统的静态函数库;
.so代表共享函数库函数库通常同时以静态库和共享库两种形式存在,可以用 ls /usr/lib 查看。
你可以通过给出完整的库文件路径名或者用 -l 标志来告诉编译器要搜索的库文件。如:
gcc -o gred fred.c /usr/lib/libm.a
这条命令要求编译器编译文件 fred.c ,将产生编译文件gred,并且除了搜索标准的C语言函数库外,还要搜索数据库以解决问题。
gcc -o gred fred.c -lm
-lm 是简写的方式,它代表的是标准库目录(/usr/lib)中名为 libm.a的函数库。gcc -o x11fred -L /usr/openwin/lib x11fred.c -lX11
这条命令用 /usr/openwin/lib 目录中的 libxX11 库来编译和链接程序 x11fred.

静态库:函数库最简单的形式是一组处于 “准备好使用”状态的目标文件。当程序需要使用函数库中的某个函数时,
它包含一个声明该函数的头文件。编译器和链接器负责将程序代码和函数库结合在一起以组成一个单独的可执行文件。
你必须用 -l 选项指明除了标准库外还需使用的库。静态库,也成做归档文件(archive),按惯例他们的文件名都以 .a 结尾。
你可以很容易的创建和维护自己的静态库,只要用 ar (代表 archive ,即建立归档文件)
程序和使用 gcc -c 命令对函数进行分别编译。你应该尽可能把函数分别保持到不同的源文件中。
如果函数需要访问公共数据,你可以把他们放在同一个源文件中,并使用在该文件中声明的静态变量。

推荐阅读
  • C语言实现推箱子游戏的完整代码
    本文详细介绍了如何使用C语言在Linux环境下实现一个简单的推箱子游戏,包括游戏的基本规则、地图设计及代码实现。适合C语言初学者学习。 ... [详细]
  • 俗话说得好,“工欲善其事,必先利其器”。这句话不仅强调了工具的重要性,也提醒我们在任何项目开始前,准备合适的工具至关重要。本文将介绍几款C语言编程中常用的工具,帮助初学者更好地选择适合自己学习和工作的编程环境。 ... [详细]
  • iTOP4412开发板QtE5.7源码编译指南
    本文详细介绍了如何在iTOP4412开发板上编译QtE5.7源码,包括所需文件的位置、编译器设置、触摸库编译以及QtE5.7的完整编译流程。 ... [详细]
  • 在DELL Inspiron 14R上部署CentOS X64 6.4的详细步骤
    本文详细记录了在DELL Inspiron 14R笔记本电脑上安装CentOS X64 6.4操作系统的过程,包括遇到的问题及解决方法。 ... [详细]
  • 本文详细解析了muduo库中的Socket封装及字节序转换功能。主要涉及`Endian.h`和`SocketsOps.h`两个头文件,以及`Socket.h`和`InetAddress.h`类的实现。 ... [详细]
  • 本文档详细介绍了在 CentOS Linux 7.9 系统环境下,如何从源代码编译安装 libwebsockets 库及其示例程序,并提供了编译过程中可能遇到的问题及解决方案。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • ###问题删除目录时遇到错误提示:rm:cannotremoveusrlocaltmp’:Directorynotempty即使用rm-rf,还是会出现 ... [详细]
  • 深入理解动态链接库及其应用
    本文将探讨动态链接库的基本概念,包括Windows下的动态链接库(DLL)和Linux下的共享库(Shared Library),并详细介绍如何在Linux环境中创建和使用这些库。 ... [详细]
  • 如何在Linux中实现字符设备控制
    本文详细探讨了在Linux环境下控制字符设备的方法,包括蜂鸣器和模数转换器(ADC)的实际操作案例。对于开发者来说,了解这些基础知识对于嵌入式系统的开发尤为重要。 ... [详细]
  • 本文将探讨如何在一个目录下针对多个源文件编写高效的Makefile,通过实例介绍从基础到高级的Makefile编写技巧。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本题通过将每个矩形视为一个节点,根据其相对位置构建拓扑图,并利用深度优先搜索(DFS)或状态压缩动态规划(DP)求解最小涂色次数。本文详细解析了该问题的建模思路与算法实现。 ... [详细]
  • 本文探讨了如何在 PHP 的 Eloquent ORM 中实现数据表之间的关联查询,并通过具体示例详细解释了如何将关联数据嵌入到查询结果中。这不仅提高了数据查询的效率,还简化了代码逻辑。 ... [详细]
author-avatar
你说的白是小白的白_958
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有