IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux 》编译器gcc/g++调试器gdb -> 正文阅读

[系统运维]Linux 》编译器gcc/g++调试器gdb

前言:

  • 本文介绍编译器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

查看各级函数调用及参数

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-01 15:29:48  更:2022-06-01 15:30:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:43:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码