makefile编译debug版本调试时无法定位到源文件:No source available for “main() at 0x8544“

问题

之前用makefile编译了一个release版本的可执行文件,但是后面想调试的时候发现无法调试。
觉得-g就能解决问题,后面发现根本不行。

这里虽然加了-g选项,但是调试的时候还是出现找不到源文件的情况。
在这里插入图片描述
在这里插入图片描述

解决方案

对已有的C/C++工程用makefile编译的release版本,在不改变源码的情况下怎么转换成debug版本。
这个问题仔细研究了一下makefile之后,才意识到makefile的规则是根据时间戳来的。

也就是说,源码不改变的情况下,原来release版本生成的.o中间文件,就算后面makefile加了-g选项,可以调试,但也是无法进入到源代码中去。因为源文件没改变,那么.o中间文件就不会重新生成,那么对应的-g选项其实就没有添加进去。

最终操作:

一方面:在makefile里面添加编译选项-g
另一方面:要把原来编译的release版本生成的中间文件.o全部删掉,这一点非常重要。
还有就是之前看书提到的:-g选项和代码优化选项-O/O1/O2/O3不要同时出现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

澄澈i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值