700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Linux 》编译器gcc/g++ 调试器gdb

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

时间:2021-01-06 12:19:46

相关推荐

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

文章目录

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

前言:

本文介绍编译器gcc,g++与调试gdb

博主收集的资料New Young,连载中。

博主收录的问题:New Young

转载请标明出处:New Young

常识

编译器:gcc与g++

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

gcc: C 的编译器,不能对C++程序编译

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

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

g++

gcc与gcc一样,基本没区别

预处理

编译

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

生成可执行程序

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

运行可执行文件

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

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

从历史角度

从分块角度

怎么理解链接

怎么调用静态库

-static

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

yum install glibc-static

yum install libstdc+±static

调试器 :gdb

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

gbd+可执行文件名

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

添加debug信息:-g

显示调试器下文件信息

格式:

list/l +行号

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

执行程序

格式 :r/run

断点

打断点

vs是F9

格式:

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

删断点

d+断点编号

让断点失效

disable +断点编号

恢复断点

enable +断点编号

显示所有断点

格式:

info +b

逐语句

格式: s(step)

逐过程

格式: n

监视

格式 :display+观察对象

取消监视

格式: undisplay+对象编号

改变监视值

set + var +监视对象 =值

finsh

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

continue

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

until +行数

直接运行到指定行

bt

查看各级函数调用及参数

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。