2012-05-03 8 views
3

私は、Valgrindプラグインを使用してUbuntu 12.04でEclipse IDEを実行しています。私はかなりの時間のC + +でゲームに取り組んできた、と私はどこかにメモリエラーがあるようだ。通常、私はValgrindでこれらをトレースします。しかし、valgrindを実行するとglutが初期化されません。私は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

なく、あなたの問題への本当の答え、しかし:あなたはBoehm_CGのようなメモリデバッグのために、ガベージコレクタを使用してみました。 Mozillaはこれをまさにこの目的のために使用しています。 http://www.hpl.hp.com/personal/Hans_Boehm/gc/leak.html – datenwolf

+0

私はそれを試しましたが、それは私にコンソールに追加の出力を与えていません。私は問題がそれ自体が漏れだとは思わない。おそらく無効なポインタに関連しているか、おそらくどこかで何らかのメモリを二重に解放しているかもしれません(プログラムを終了すると、二重リンクのメッセージが破損してクラッシュします)。 – dsnettleton

答えて

5

これは私の推測です。あなたのIDEにはおそらく$DISPLAY環境変数がありません。 Valgrindを起動する前に、環境を設定して$DISPLAYに設定する必要があります。

端末を起動し、echo $DISPLAYを起動します。その値はおそらく:0.0です。

最悪の場合、私はsetenv()をCコードの中に使ってみるか、Valgrindを起動するコマンドラインでDISPLAYを設定しようとしています。

+0

それはそれでした。 valgrindに引数 '-DISPLAY =:0.0 'を追加する必要がありました。どうもありがとうございます;私は私の髪を引っ張っていた。 – dsnettleton

1

また、この環境変数DISPLAY:= 0.0をEclipse内に追加する必要があります。 実行ファイルの起動設定で、[表示]変数を[環境]タブに追加するか、環境を継承することを選択します。

実行 - > RunConfiguration ...->環境

を今すぐ

に新しい

をクリックして、追加

DISPLAY:0

でそれ

+0

スマート。ありがとう。 これらの機能を備えた新しい変数を追加してください: 変数:DISPLAY:0 値:{空のまま} – amirkavyan

関連する問題