C++ freeglut无法使用valgrind打开显示器

C++ freeglut无法使用valgrind打开显示器,c++,eclipse,opengl,valgrind,glut,C++,Eclipse,Opengl,Valgrind,Glut,我正在使用Valgrind插件在Ubuntu12.04上运行Eclipse IDE。我在C++中玩了一段时间的游戏,我好像在某个地方有内存错误。通常,我用Valgrind追踪这些。然而,当我运行valgrind时,glut无法初始化。我应该注意,当我不使用valgrind时,游戏初始化没有问题。我的主要功能的代码如下: int main(int argc, char** argv) { char windowTitle[12] = "Game Window"; printf("Initi

我正在使用Valgrind插件在Ubuntu12.04上运行Eclipse IDE。我在C++中玩了一段时间的游戏,我好像在某个地方有内存错误。通常,我用Valgrind追踪这些。然而,当我运行valgrind时,glut无法初始化。我应该注意,当我不使用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运行的程序并没有走得很远。
我处在发展的最后阶段,却被困在试图消除记忆错误的努力中,这真是令人沮丧。什么可能会阻止glut初始化,我可以做些什么来解决这个问题?

这是我的猜测:您的IDE可能缺少
$DISPLAY
环境变量。在某些地方,您必须在启动Valgrind之前将环境配置为设置
$DISPLAY

启动终端并
echo$DISPLAY
。它的值可能是
:0.0


在最坏的情况下,我会尝试在C代码中使用
setenv()
,或者在启动Valgrind的命令行中设置DISPLAY(这些情况都没有经过测试,它们可能不起作用)。

此外,您还必须在Eclipse中添加此环境变量DISPLAY:=0.0。 在可执行文件的启动配置中,将显示变量添加到“环境”选项卡,或选择“继承环境”

运行->运行配置…->环境

现在点击

新的

显示器:0


在这篇文章中,这不是你问题的真正答案,但是:你是否尝试过使用垃圾收集器,比如Boehm_CG进行内存调试。Mozilla使用它正是为了这个目的。我试过了,但它没有给控制台提供任何额外的输出。我不认为问题是泄漏本身;这可能与无效指针有关,或者可能在某个地方双重释放一些内存(每隔一段时间,当我结束程序时,它会因损坏的双链表消息而崩溃)。我不得不将参数
-DISPLAY=:0.0
添加到valgrind中。多谢各位,;我在拔头发,聪明。谢谢添加具有以下功能的新变量:变量:显示:0值:{保留为空}