【原创】GDB意外提示:"No source available" 【原因非比寻常】

blogdaren 2022-06-01 抢沙发 388人次

问题背景:

调试同一个始终未做任何改动的程序,GDB一直工作正常,某一天突然出现题示问题,这似乎就说不过去了,一番折腾之后,各路解决方案均无效,后来静心想起自己期间升级过GCC版本,所以怀疑很可能是GDB和GCC版本之间某种不兼容所导致,经印证确实如此(而让人不爽的是如果因久失忆,正常很难注意到是版本不兼容的问题,也极容易陷入常见的解决方案死循环之中,所以也要勤总结勤思考如何避免问题发生)

问题原因:

原版本的GDB无法识别更高版本的GCC生成的的调试符号格式debug symbols format)。

解决方案:

因不想升级GDB,所以只好改变GCC生成的的调试符号格式,以便原版本的GDB能够识别,方法是将Makefile中原来的编译参数:

CFLAGS = -g -O0

修改为:

CFLAGS = -gdwarf-3 -O0

相关手册:

https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html

注意事项:

1、如果没有升级过GCC或GDB的版本,那问题的最大的注意点可能就是 千万不要忘记记添加 -g 调试参数。

2、如果升级了GCC的版本,切记一定要同步升级GDB的版本,版本之间的关系从GNU官方查询。

#source##gdb##No##available#

版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。

本文链接:【原创】GDB意外提示:"No source available" 【原因非比寻常】

Free Web Hosting