最近写了一个小程序,内部变量的改变自己不是很清楚,所以想使用gdb调试器来查看变量的改变过程,进而对其有一个更好地把握。
但是在gcc编译加上-g选项后,进入gdb调试,却怎么也打印不出来变量的值,最初是出现No symbol "xxx" in current context
后来经过查资料后,了解到这个可能是由于gcc编译的时候优化造成的,对局部变量进行寄存器存值运算,以及变量是否涉及到公共子表达式的问题
后来,我在编译的时候加上了-O0 这个选项(前面是大O,后面是零),然后再进行测试,可是结果还是No symbol "xxx" in current context
再后来,我在网上了解到了-gstabs+这个选项,而对于这个选项,解释是:以stabs格式声称调试信息,并且包含仅供gdb使用的额外调试信息.
对于stabs格式,我又进行了一番调查,发现,他是一个做调试信息的东西,调试信息包含了源文件的行号,类型变量,函数,以及他们的