gdb调试程序,出现:No symbol “i” in current context.
尝试了一个非常简单的hello.cpp程序,
#include <stdio.h>
int main()
{
int i = 100;
printf("hello world, %d\n", i);
return 0;
}
使用g++ -g hello.cpp
编译生成a.out
。然后使用g++ ./a.out
运行,设置断点,使用p i
查看变量i的值,却发现无法查看,提示:No symbol "i" in current context
.
可能的原因:
- 使用了-O优化选项,搜索Makefile文件,然而并没有此选项。
- gdb的版本太低,无法识别gcc 4.8的编译符号(果然如此)。使用
-gdwarf-2
取代-g
选项即可。
自己具有sudo权限,然而却无法切换到其他人的工作目录,例如sudo cd /home/abc
,提示没有cd
命令。后查看别人的博客,发现sudo -i
就OK,具体原因未探究,够用就行了。
参考资料: