3

我正在使用 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 时并没有走得太远。处于我开发的最后阶段,只是为了清除内存错误而陷入困境,真是令人沮丧。什么可能导致过剩无法初始化,我能做些什么来解决这个问题?

4

2 回答 2

5

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

启动终端和echo $DISPLAY. 它的价值大概是:0.0

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

于 2012-05-04T12:51:46.263 回答
1

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

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

现在点击

新的

并添加

显示:0

在里面

于 2013-08-02T12:52:02.383 回答