热门标签 | 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 命令对函数进行分别编译。你应该尽可能把函数分别保持到不同的源文件中。
如果函数需要访问公共数据,你可以把他们放在同一个源文件中,并使用在该文件中声明的静态变量。

推荐阅读
  • 本文探讨了如何在 Spring MVC 框架下,通过自定义注解和拦截器机制来实现细粒度的权限管理功能。 ... [详细]
  • 在Android应用开发过程中,开发者经常遇到诸如CPU使用率过高、内存泄漏等问题。本文将介绍几种常用的命令及其应用场景,帮助开发者有效定位并解决问题。 ... [详细]
  • JUnit下的测试和suite
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文详细介绍了Linux系统中常用的文件操作命令,包括echo用于输出内容至屏幕或文件,cat用于显示或合并文件内容,sed用于流编辑器功能,以及wc命令用于统计文件中的字节、行数和单词数量。通过具体示例加深理解。 ... [详细]
  • 本文探讨了如何将Python对象转换为字节流,以实现文件保存、数据库存储或网络传输的需求。主要介绍了利用pickle模块进行序列化的具体方法。 ... [详细]
  • 本文详细介绍了在 Red Hat Linux 系统上安装 GCC 4.4.2 的步骤,包括必要的依赖库的安装及常见问题的解决方法。 ... [详细]
  • 深入解析C语言中的关键字及其分类
    本文将全面介绍C语言中的关键字,并按照功能将其分为数据类型关键字、控制结构关键字、存储类别关键字和其他关键字四大类,旨在帮助读者更好地理解和运用这些基本元素。C语言中共有32个关键字。 ... [详细]
  • 在中标麒麟操作系统上部署达梦数据库及导入SQL文件
    本文档详细介绍了如何在中标麒麟操作系统上安装达梦数据库,并提供了导入SQL文件的具体步骤。首先,检查系统的发行版和内核版本,接着创建必要的用户和用户组,规划数据库安装路径,挂载安装介质,调整系统限制以确保数据库的正常运行,最后通过图形界面完成数据库的安装。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 本文详细介绍了如何利用Xshell配合Xftp实现文件传输,以及如何使用Pure-FTPd构建FTP服务,并探讨了VSFTP与MySQL结合存储虚拟用户的方法。 ... [详细]
  • 本文详细探讨了在Java中如何将图像对象转换为文件和字节数组(Byte[])的技术。虽然网络上存在大量相关资料,但实际操作时仍需注意细节。本文通过使用JMSL 4.0库中的图表对象作为示例,提供了一种实用的方法。 ... [详细]
  • 本文详细介绍了Linux系统中信号量的相关函数,包括sem_init、sem_wait、sem_post和sem_destroy,解释了它们的功能和使用方法,并提供了示例代码。 ... [详细]
  • 函子(Functor)是函数式编程中的一个重要概念,它不仅是一个特殊的容器,还提供了一种优雅的方式来处理值和函数。本文将详细介绍函子的基本概念及其在函数式编程中的应用,包括如何通过函子控制副作用、处理异常以及进行异步操作。 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 16.04 系统上配置 Qt 5.5 的交叉编译环境,特别针对 i.MX6 平台进行了优化设置。内容涵盖从基本的软件安装到高级配置的全过程。 ... [详细]
  • 利用 Calcurse 在 Linux 终端高效管理日程与任务
    对于喜爱使用 Linux 终端进行日常操作的系统管理员来说,Calcurse 提供了一种强大的方式来管理日程安排、待办事项及会议。本文将详细介绍如何在 Linux 上安装和使用 Calcurse,帮助用户更有效地组织工作。 ... [详细]
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社区 版权所有