栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

文章目录
  • 前言:
  • 常识
  • 编译器:gcc与g++
  • g++
    • 预处理
    • 编译
    • 汇编(生成机器可识别的二进制码)
    • 生成可执行程序
    • 运行可执行文件
    • 为什么程序运行要经过这4个过程
      • 从历史角度
      • 从分块角度
    • 怎么理解链接
    • 怎么调用静态库
      • -static
  • 调试器 :gdb
      • gbd+可执行文件名
      • 添加debug信息:-g![在这里插入图片描述](https://img-blog.csdnimg.cn/7f1db28cf5d04c2980b41fbc46da01df.png)
      • 显示调试器下文件信息
        • 格式:
      • 执行程序
        • 格式 :r/run
      • 断点
        • 打断点
        • 格式:
        • 删断点
        • 让断点失效
        • 恢复断点
        • 显示所有断点
        • 格式:
      • 逐语句
        • 格式: s(step)
      • 逐过程
        • 格式: n
      • 监视
        • 格式 :display+观察对象
        • 取消监视
        • 格式: undisplay+对象编号
        • 改变监视值
      • finsh
      • continue
      • until +行数
      • bt

前言:
  • 本文介绍编译器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下运行可执行文件

为什么程序运行要经过这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

查看各级函数调用及参数

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/935303.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号