2016-08-07 16 views
0

-gdwarf-2でコンパイルすることを示唆していたこの問題に対する古い解決策が見つかりましたが、この解決法は私のためには機能しません。GDB/DDDシンボルなし<var>現在のコンテキスト

g++ -g -O0 -gdwarf-2 test.cpp; ddd. ./a.out 
:私が使用

int main() 
{ 
    for (int i = 0; i < 10; ++i) 
    { 

    } 
} 

コマンドはこれらです:

ので、コンパイルされたファイルにdddを実行し、その後、ダブルクリック変数は常にエラーになりno symbol <var> in current context

私のプログラムはこれです

プログラムのバージョン:

ddd: GNU DDD 3.3.12 (x86_64-pc-linux-gnu) 
gdb: GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1 
gcc: gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) 

どうすればこの作品を作成できますか?

+0

を持って

g++ -Wall -O0 -ggdb -o test.exe test.cpp 

ddd ./test.exe 

とdddを走りました;私は一般的に '-ggdb3'(これは-gを意味するので、あなたはただ一つのオプションが必要です)と一緒に行きます。 -g3を指定すると、大量の追加情報があるため、実行可能なサイズが大幅に大きくなります。 – kfsone

+0

待ち、 'g ++ -ggdb -O0 program.cpp'?それはそれを修正しませんでした。 –

答えて

1

変数を表示/表示するには、スコープ内にある必要があります。ローカル変数/パラメータの場合、そのスコープ内のブレークポイントになければなりません。

あなたのサンプルプログラムでdddを起動してすぐにiを印刷/表示しようとすると、エラーが再現できます。

for行にブレークポイントを設定してプログラムを実行すると、期待通りに印刷/表示できます。

私がしてコンパイル:あなたはGDB/DDDでデバッグしているので、私が代わりに-ggdb` `使用することを検討して、

GNU DDD 3.3.12 (x86_64-pc-linux-gnu) 
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1 
gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.1) 
+0

。表示変数の機能がどのように使用されるのか誤解されていたようです。 –

0

コンパイルフラグから-gdwarf-2を削除しようとしましたか?古いデバッガを使用しているシステムで新しいコンパイラを使用する場合も同様の問題がありました。その後、コンパイラによって使用されるデフォルトのデバッグシンボル形式は、デバッガにとっては新しく、コンパイラに古い形式を使用させる必要がありました。デバッガが最近更新された場合も同様です。

+0

はい、私は '-gdwarf-2'なしで試しました。私は、その旗がその問題の解決策を探していることだけを発見しました。 –

+0

-gフラグは依然として厳密に保たれていますか? –

+0

はい。 11以上お待ちください –

関連する問題