我正在使用Valgrind插件在Ubuntu 12.04上运行Eclipse IDE。我已经用C ++开发游戏很长一段时间了,而且我似乎在某个地方出现了内存错误。通常情况下,我跟Valgrind追踪这些。但是,当我运行valgrind时,过剩无法初始化。我应该注意,当我不使用valgrind时,游戏初始化没有问题。我的主要功能的代码如下:
int main(int argc, char** argv) {
char windowTitle[12] = "Game Window";
printf("Initializing Glut...\n");
glutInit(&argc, argv);
printf("Glut initialized!\n");
alutInit(&argc, argv);
Game_Object* game = new Game_Object(windowTitle, 1200, 675, argc, argv);
delete game;
printf("game ended\n");
return 0;
}
结果输出到控制台是:
Initializing Glut
freeglut (/home/dsnettleton/Documents/Programming/Eclipse/workspace/Plutoids/Debug/Plutoids): failed to open display ''
显然,程序在valgrind运行时并没有走得太远。 在我开发的这个最后阶段真的很沮丧,只是因为试图清除内存错误而陷入困境。什么可能会使初始化过剩,以及如何解决问题呢?
答案 0 :(得分:5)
这是我的猜测:您的IDE可能缺少$DISPLAY
环境变量。某些地方你必须配置环境以在启动Valgrind之前设置$DISPLAY
。
启动终端echo $DISPLAY
。它的值可能是:0.0
。
在最坏的情况下,我尝试在C代码中使用setenv()
或在启动Valgrind的命令行中设置DISPLAY(这些案例都没有经过测试,它们可能无效)。
答案 1 :(得分:1)
此外,您还必须在Eclipse中添加此环境变量DISPLAY:= 0.0。 在可执行文件的启动配置中,将Display变量添加到Environment选项卡,或选择继承环境。
运行> RunConfiguration ...->环境
现在点击
新
并添加
显示:0
在其中