gcc与gdb版本兼容问题

今天在用gdb调试C++程序的时候,想用"p i”命令打印出程序的一个局部变量i,却一直提示:优化

No symbol "i" in current context.

我愣了下,想到有几种缘由可能致使这种状况:google

一、编译的时候没有加上-g选项,一直编译器没有在可执行程序中加入调试信息;spa

二、编译的时候加上了优化选项,使得编译器把某些变量优化掉了;调试

三、断点加的位置不对,变量超出做用域了。code

我从新检查了程序以及编译命令,的确是没错的。因而我只能在程序中加了个全局变量gi,而后gdb起来,p gi,发现全局变量倒是能够显示的。blog

google了很久都没解决问题,后来再次进入gdb准备尝试的时候,忽然无心间看到当前的gdb版本是7.2。作用域

我忽然想到这台虚拟机上的CentOS 6.4自带的gcc版本貌似只有4.6.x,而以前我已经将gcc升级到了4.8.1,升级跨度仍是蛮大的,是否是有可能gcc4.8.1和gdb7.2不兼容?编译器

因而我下gdb的源码包(最新版本7.6),解压,./configure,make,sudo make install,安装过程很快,比gcc快多了。安装好以后gdb –v:源码

GNU gdb (GDB) 7.6
Copyright (C) 2013 Free Software Foundation, Inc.

而后gdb走起,果真能够了:虚拟机

(gdb) p i
$1 = 11

版本问题真够坑爹的,把问题贴出来,希望让你们少走弯路。

相关文章
相关标签/搜索