Linux--gcc,g++区别;gdb调试

本文详细解析了GCC和G++编译器的主要区别,包括如何正确编译C++代码,以及使用GDB进行debug版本的创建、断点设置、运行管理和变量值显示等调试方法。

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

gcc,g++区别

误区:gcc编译c语言,g++编译c++
区别1:gcc编译c++代码需要加-lstdc++,gcc默认只链接c库,并不会链接c++库,需要手工指定
g++默认链接c库和c++标准库

区别2:gcc如果编译c语言文件,用c语言方式编译,编译c++用c++方式编译,g++不管编译c还是c++都用c++标方式编译

可执行文件的两种版本
1.debug版本,调试版本,编译阶段会加入某些调试信息
编译时,加入-g选项,可生成debug版本
2.release版本,发行版本,没有调试信息
gcc默认生成release版本

调试方法:

gdb debug版本可执行文件
显示源码:l(list)(默认显示main函数所在文件的源码)
list filename:行号

断点管理
添加断点:1.b 行号 给指定行添加断点
2.b 函数名 给指定函数实现第一行添加一个断点
3.b filename 行号 给指定文件的行号添加一个断点

查看断点信息:info b
删除断点:d 断点号

运行管理
r 启动执行,程序执行到逻辑上的第一个断点处
n 逐过程
s 逐语句
finish 跳出函数
c 继续执行,直到下一个断点
u 退出循环
q 退出调试

显示变量的值
p 变量名 输入一次,执行一次
display 变量名 执行过程中,每执行一步,显示一次
info display 显示所有display信息
undisplay display编号 取消一个display

p &valname 显示变量地址
p ptr 显示ptr中存储的值,指向变量的地址
p *ptr 显示ptr指针指向的变量的值
p arr 显示数组所有元素
p arr 在形参中退化为指针 p *arr@数组大小 显示数组所有元素

对于结构体变量
p node 显示结构体变量中所有成员的值
p node.a 显示node中a成员的值
p node->a

如果测试一个有返回值的函数能否正常执行
p 函数名(传递的实参)显示函数执行结果
bt 显示函数调用栈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值