2009-07-09 18 views
0

私はインテルのコンパイラとビジュアルスタジオを使用しており、マップにある値をデバッグできないようです。私はマップのサイズを表示するクイックプレビューを取得しますが、要素は「(エラー)」としてしか表示されません、簡単な例を使って説明します。単一のエントリmyMapVariable [6] = 1でマップを生成しました;壊れたstd :: map visualiser in VS2005

Iマウスであれば、私はこの「myMapVariable 1」 取得し、ウォッチウィンドウに、私は同じことを取得し、プラスに拡大することは、単一の子の名前=「(エラー)」というエントリと値を与える上= 0(それは間違っている)。

autoexp.datデバッグファイルに行を追加しました。このファイルには、[raw members]という子の生のメンバー変数が表示され、その出力はimageに表示されます。私はかなり助けなしにこれをさらに掘り下げる能力の限界に達しているので、ここに誰かが何らかの洞察を提供できるかどうか尋ねるだろう。

答えて

0

私はIntelを使用してこの問題を解決することはできませんでしたが、今は最新のVisual StudioコンパイラVS2010に移行しました。これはもはや問題にはなりません。私は未回答の質問を残したくないので、これを答えとしてマークしています。

0

私の唯一の提案は、マップが初期化され、範囲内にあることを確認することです。そうでなければ、わかりません、私はこれを見たことがないが、私は今VS2008を使用します。

+0

はい、私はときどきデバッガを停止し、マップを反復するループを追加するだけで、値が何であるかを知ることができます:(おそらく2008年は答えです(または少なくとも良い転換) –

1

ほとんどの場合、積極的な最適化設定を使用しています。少なくともあなたのスクリーンショットはそのようなことの典型です。その場合、デバッガは積極的にホット値をレジスタに詰め込みます。停止した時点で、マップ全体を適切に視覚化するために必要な値はすでに破棄されていて、それ以外のもので上書きされている可能性があります(例えば、現在のノードへのポインタのように)。私は、高品質な最適化で有名なIntel C++が、VC++よりもこのようなことを頻繁に行っていると考えています(ただし、後者の場合も同様です)。

(これはオプティマイザを無効にする)デバッグ構成でプロジェクトを再コンパイルして、それが役立つかどうかを確認してください。

+0

Pavel、フィードバックのおかげで - 私は実際に/ Odフラグ(Optimisations無効)を持つデバッグモードでこれを実行しています。私はストレートMSVCコンパイラでこれを試してみて、違いがあるかどうかを参照してください。インテルコンパイラがstd :: mapをどのように扱うか –

関連する問題