freeglut 无法使用 valgrind 打开显示
Posted
技术标签:
【中文标题】freeglut 无法使用 valgrind 打开显示【英文标题】:freeglut fails to open display with valgrind 【发布时间】:2012-05-03 22:40:22 【问题描述】:我正在使用 Valgrind 插件在 Ubuntu 12.04 上运行 Eclipse IDE。我用 C++ 开发游戏已经有一段时间了,我似乎在某个地方出现了内存错误。通常,我使用 Valgrind 跟踪这些。但是,当我运行 valgrind 时,过剩无法初始化。我应该注意,当我不使用 valgrind 时,游戏初始化没有问题。我的main函数的代码如下:
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 无法初始化,我可以做些什么来解决这个问题?
【问题讨论】:
不是您问题的真正答案,但是:您是否尝试使用垃圾收集器,例如 Boehm_CG 进行内存调试。 Mozilla 正是为了这个目的而使用它。 hpl.hp.com/personal/Hans_Boehm/gc/leak.html 我试过了,但它没有给我任何额外的控制台输出。我不认为问题本身就是泄漏。它可能与无效指针有关,或者可能在某处双重释放一些内存(每隔一段时间,当我结束程序时,它会因损坏的双链表消息而崩溃)。 【参考方案1】:这是我的猜测:您的 IDE 可能缺少 $DISPLAY
环境变量。在启动 Valgrind 之前,您必须在某个地方配置环境以设置 $DISPLAY
。
启动终端和echo $DISPLAY
。它的值大概是:0.0
。
在最坏的情况下,我会尝试在 C 代码中使用 setenv()
或在启动 Valgrind 的命令行中设置 DISPLAY(这些情况都没有经过测试,它们可能不起作用)。
【讨论】:
就是这样。我不得不将参数-DISPLAY=:0.0
添加到 valgrind。非常感谢;我正在拔头发。【参考方案2】:
您还必须在 Eclipse 中添加此环境变量 DISPLAY:=0.0。 在可执行文件的启动配置中,将 Display 变量添加到 Environment 选项卡,或选择继承环境。
运行->运行配置...->环境
现在点击
新的
并添加
显示:0
在里面
【讨论】:
聪明。谢谢。添加具有以下功能的新变量:变量:DISPLAY:0 VALUE:leave empty以上是关于freeglut 无法使用 valgrind 打开显示的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Visual Studio C++ 2013 中 #include freeglut 的 OpenGL