GCC/GDB 安装以及常用的指令

本文详细介绍了在Linux和Windows环境下GCC的安装步骤,并提供了从源代码到可执行文件的编译过程,包括预处理、编译、汇编和链接。同时,讲解了GDB的安装和使用,包括设置断点、删除断点、运行和调试命令,以及如何查看和修改程序状态。此外,还列举了重要的编译参数和GDB指令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GCC

安装

linux 下直接 apt-get install 就行
win 安装稍微麻烦一点,首先下载一个MinGW
默认安装,桌面生成快捷方式双击打开
在这里插入图片描述
安装完打开是这样的
1 首先选中箭头1所指右击 选择 Mark for Installation
2 点击左上角箭头2所指,选择 Apply changes
3 接着等待完成 close 就行
4 添加环境变量
在这里插入图片描述
添加到刚刚安装的 miniGW 的 bin 目录

5 测试是否安装成功
在这里插入图片描述
有版本号就可以了

编译过程

程序从源文件到可执行文件的过程的详细的内容可以参阅我的其他文章,这里只列出代码

g++ test.cpp -o test

1- 预处理

g++  -E test.cpp  -o test.i 

2- 编译

g++  -S test.i  -o   test.s

3- 汇编

g++  -c test.s  -o test.o

4- 链接

g++ test.o  -o test

一些重要的编译参数

g++ -g test.cpp

- 编译带调试信息的可执行文件
g++ -O[n] test.cpp

- O1 	为默认优化
- O2  	除了完成-O1的优化之外,还进行一些额外的调整工作,如指令调整等
- O3 	则包括循环展开和其他一些与处理特性相关的优化工作。
g++ -I/include_dir test.cpp

- 使用 -I 来添加头文件包含目录
g++ -Wall test.cpp

- 打印警告消息
g++ -w test.cpp

- 关闭所有警告消息
g++ -std=c++11 test.cpp

- 使用c++11的标准来编译
g++ -D[***] test.cpp

- 当源码中有宏定义等条件编译的选项可以通过 -D 的参数开启
g++ test.cpp -o test

- 指定输出,不指定输出文件名为 a(a.exe)

GDB

安装

linux apt-get install 应该就行
win 还是通过上面提到的 miniGW 安装
在这里插入图片描述
安装步骤同 GCC 不累述了
在这里插入图片描述
有版本信息就成功了

GDB 指令

g++ -g debug.cpp -o debug

gdb debug.exe

- 在编译的时候加上 -g 的参数才能使用 gdb 的功能
== 打断点 ==
break < 函数名 >
break < 行号 >
break < 文件名:行号 >
break < 文件名:函数名 >
break < +/-偏移量 >  当前行的 +/- 偏移处设置断点
break < *地址 >  指定的地址打断点
== 删除断点 ==
clearbreak 对应
delete  breakpoints num # 删除第num个断点
== run(r) continue(c) ==
run 					从头开始执行,直到遇到断点
run argv[1] argv[2] 	调试时命令行传参
continue 				从当前执行位置往下

== 打印 print(p) ==
print /[] 变量 或者 $寄存器名
[] 为输出格式 x/d/o/u/f/s...
print $pc
== info(i) ==
info all-registers 	查看所有寄存器的值
info register 		查看某个寄存器的值,如 info register pc 命令可以查看PC指针的内容
info breakpoints 	查看所有断点位置,breakpoints(break/b)
== list(l) 查看源码 ==
list 				显示当前行前后的代码,默认显示十行,按回车查看更多
list - 				显示当前行之前的代码
list <行号>			显示指定行号前后的代码
list <文件名:行号>	显示指定文件中指定行号前后的代码
== 执行与退出 ==
next(n)  	单步(逐语句)执行
continue(c) 继续运行  或者按 tab键
step(s)  	跳转到函数内部
finish   	结束当前函数,返回到函数调用点
quit(q)  	退出 gdb
== 其他 ==
enable breakpoints  	 启用断点
disable breakpoints 	 禁用断点
display 				 追踪查看具体变量值
undisplay
watch 					 被设置观察点的变量发生修改时,打印显示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值