Linux 》编译器gcc/g++,调试器gdb

简介:

@[TOC]

前言:

  • 本文介绍编译器gcc,g++与调试gdb
  • 博主收集的资料New Young,连载中。
  • 博主收录的问题:New Young
  • 转载请标明出处:New Young

常识

编译器:gcc与g++

  • 如果说vim作为文本编辑器解决程序的写问题,那么gcc与g++就是解决编译问题
  • Windows下的vs2019可以完成程序的编译运行工作,同样Linux下也可以,下面介绍Linux下的2款针对c与c++编译器:
gcc: C 的编译器,不能对C++程序编译

g++:C++编译器,因为C++完全兼容C,所以可以对C程序进行编译

  • Windows下的vs2019,因为封装过好的原因,再查看程序执行的4步骤:预处理,编译,汇编,链接,不容易观察,而Linux下的gcc可以非常方便的进行查看。

g++

gcc与gcc一样,基本没区别

预处理

在这里插入图片描述

编译

在这里插入图片描述

汇编(生成机器可识别的二进制码)

在这里插入图片描述

生成可执行程序

  • 如果你不想观察编译的具体过程,可以一步完成
  • 在一些语言格式中,有些是C99标准,使用 -std=c99即可支持

在这里插入图片描述

运行可执行文件

  • 一个程序只有一个含有main函数的可执行文件,而可执行文件有多个,因此在Linux运行可执行文件要注意
  • Linux下运行可执行文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UL6at5wv-1653624080425)(gcc.g++.gdb%E5%88%9D%E8%AF%86.assets/image-20220526123404024-16535396452163.png)]

为什么程序运行要经过这4个过程

从历史角度

在这里插入图片描述

从分块角度

在这里插入图片描述

怎么理解链接

在这里插入图片描述

怎么调用静态库

-static

在这里插入图片描述

  1. 在shell执行下面2条指令即可

    yum install glibc-static

    yum install libstdc++-static

调试器 :gdb

  • Windows下的vs2019调试非常方便,而Linux下也可以调试--gdb,但是Linux下的调试不像vs2019那样怎么方便,不过只需要了解一些必要指令就可以了
  • 退出调试 ctrl+d

gbd+可执行文件名

  • 我们知道在vs2019下,只能在debug模式下进行调试,release是不行的,而Linux下可执行文件默认是release的,因此如果在生成可执行文件时需要一些debug信息

添加debug信息:-g在这里插入图片描述

显示调试器下文件信息

格式:

list/l +行号

显示binFile源代码 接着上次的位置往下列,每次列10行

在这里插入图片描述

执行程序

格式 :r/run

断点

打断点

vs2019是F9

格式:

b+行号/函数名,更多的使用行号

在这里插入图片描述

删断点

d+断点编号

在这里插入图片描述

让断点失效

disable +断点编号
在这里插入图片描述

恢复断点

enable +断点编号

在这里插入图片描述

显示所有断点

格式:

info +b
在这里插入图片描述

逐语句

格式: s(step)

在这里插入图片描述

逐过程

格式: n

监视

格式 :display+观察对象

取消监视

格式: undisplay+对象编号

改变监视值

set + var +监视对象 =值

在这里插入图片描述

finsh

功能:直接结束函数功能,一般在调试进入循环,想直接得到结果时使用。

continue

功能:程序执行到下一个短点

until +行数

直接运行到指定行

bt

查看各级函数调用及参数

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
7月前
|
NoSQL Linux 编译器
GDB符号表概念和在Linux下获取符号表的方法
通过掌握这些关于GDB符号表的知识,你可以更好地管理和理解你的程序,希望这些知识可以帮助你更有效地进行调试工作。
340 16
|
6月前
|
NoSQL Linux 开发工具
Linux环境基础开发工具的使用(yum、vim、gcc、g++、gdb、make/Makefile)
本文介绍了yum 包管理工具、Vim 编辑器、gcc/g++ 编译器、gdb 调试器、编译原理及 Makefile 的使用,同时还配备了如何使用,以及图解。旨在帮助读者更好地理解和应用这些工具与技术。
349 0
|
Linux 编译器 C语言
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
292 2
|
程序员 编译器 Linux
linux gdb-多线程调试
相信使用C/C++语言开发软件的程序猿们都经历过‘栈溢出’的问题。‘栈溢出’问题通常十分的隐蔽,有的时候问题复现也十分的困难。每当软件出现莫名其妙的问题时,总是有人怀疑是不是栈溢出了,但是问题的排查又十分的困难,所以,‘栈溢出’就是广大C/C++开发者的噩梦。
299 0
|
NoSQL IDE Linux
linux gdb-多线程调试
linux下应用程序的调试工具主要就是gdb,可能你已经习惯了IDE形式的调试工具。也许刚开始使用gdb作为调试工具,会有诸多的不变,但是一旦你学会了如何使用gdb你就会被其富有魔力的功能所吸引的,下面开始逐步的学习linux下gdb的使用方式。
627 0
|
3月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
469 1
二、Linux文本处理与文件操作核心命令
|
3月前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
325 137
|
3月前
|
安全 Ubuntu Unix
一、初识 Linux 与基本命令
玩转Linux命令行,就像探索一座新城市。首先要熟悉它的“地图”,也就是/根目录下/etc(放配置)、/home(住家)这些核心区域。然后掌握几个“生存口令”:用ls看周围,cd去别处,mkdir建新房,cp/mv搬东西,再用cat或tail看文件内容。最后,别忘了随时按Tab键,它能帮你自动补全命令和路径,是提高效率的第一神器。
751 57
|
2月前
|
存储 安全 Linux
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
Linux虚拟机遇紧急模式?别慌!多因磁盘挂载失败。本文教你通过日志定位问题,用`xfs_repair`等工具修复文件系统,三步快速恢复。掌握查日志、修磁盘、验重启,轻松应对紧急模式,保障系统稳定运行。
533 2
|
3月前
|
缓存 监控 Linux
Linux内存问题排查命令详解
Linux服务器卡顿?可能是内存问题。掌握free、vmstat、sar三大命令,快速排查内存使用情况。free查看实时内存,vmstat诊断系统整体性能瓶颈,sar实现长期监控,三者结合,高效定位并解决内存问题。
341 0
Linux内存问题排查命令详解