Freeglut 无法打开 Valgrind 的显示器

freeglut fails to open display with valgrind

本文关键字:Valgrind 显示器 Freeglut      更新时间:2023-10-16

我正在使用Valgrind插件在Ubuntu 12.04上运行Eclipse IDE。我在C++中开发一款游戏已经有一段时间了,但我似乎在某处出现了内存错误。通常,我用瓦尔格林德追踪这些。但是,当我运行 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 endedn");
  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。在可执行文件的启动配置中,将 Display 变量添加到"环境"选项卡,或选择继承环境。

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

现在点击

新增功能

并添加

显示 :0

在其中