- 前言:
- 常识
- 编译器:gcc与g++
- g++
- 预处理
- 编译
- 汇编(生成机器可识别的二进制码)
- 生成可执行程序
- 运行可执行文件
- 为什么程序运行要经过这4个过程
- 从历史角度
- 从分块角度
- 怎么理解链接
- 怎么调用静态库
- -static
- 调试器 :gdb
- gbd+可执行文件名
- 添加debug信息:-g
- 显示调试器下文件信息
- 格式:
- 执行程序
- 格式 :r/run
- 断点
- 打断点
- 格式:
- 删断点
- 让断点失效
- 恢复断点
- 显示所有断点
- 格式:
- 逐语句
- 格式: s(step)
- 逐过程
- 格式: n
- 监视
- 格式 :display+观察对象
- 取消监视
- 格式: undisplay+对象编号
- 改变监视值
- finsh
- continue
- until +行数
- bt
常识 编译器:gcc与g++
本文介绍编译器gcc,g++与调试gdb
博主收集的资料New Young,连载中。
博主收录的问题:New Young
转载请标明出处:New Young
- 如果说vim作为文本编辑器解决程序的写问题,那么gcc与g++就是解决编译问题
- Windows下的vs2019可以完成程序的编译运行工作,同样Linux下也可以,下面介绍Linux下的2款针对c与c++编译器:
gcc: C 的编译器,不能对C++程序编译
g++:C++编译器,因为C++完全兼容C,所以可以对C程序进行编译
- Windows下的vs2019,因为封装过好的原因,再查看程序执行的4步骤:预处理,编译,汇编,链接,不容易观察,而Linux下的gcc可以非常方便的进行查看。
gcc与gcc一样,基本没区别
预处理 编译 汇编(生成机器可识别的二进制码) 生成可执行程序- 如果你不想观察编译的具体过程,可以一步完成
- 在一些语言格式中,有些是C99标准,使用 -std=c99即可支持
为什么程序运行要经过这4个过程 从历史角度 从分块角度 怎么理解链接 怎么调用静态库 -static
- 一个程序只有一个含有main函数的可执行文件,而可执行文件有多个,因此在Linux运行可执行文件要注意
- Linux下运行可执行文件
-
在shell执行下面2条指令即可
yum install glibc-static
yum install libstdc+±static
- Windows下的vs2019调试非常方便,而Linux下也可以调试–gdb,但是Linux下的调试不像vs2019那样怎么方便,不过只需要了解一些必要指令就可以了
- 退出调试 ctrl+d
- 我们知道在vs2019下,只能在debug模式下进行调试,release是不行的,而Linux下可执行文件默认是release的,因此如果在生成可执行文件时需要一些debug信息
执行程序 格式 :r/run 断点 打断点list/l +行号
显示binFile源代码 接着上次的位置往下列,每次列10行
vs2019是F9
格式:删断点b+行号/函数名,更多的使用行号
d+断点编号
让断点失效disable +断点编号
enable +断点编号
显示所有断点 格式:逐语句 格式: s(step) 逐过程 格式: n 监视 格式 :display+观察对象 取消监视 格式: undisplay+对象编号 改变监视值info +b
set + var +监视对象 =值
finsh功能:直接结束函数功能,一般在调试进入循环,想直接得到结果时使用。
continue功能:程序执行到下一个短点
until +行数直接运行到指定行
bt查看各级函数调用及参数



