この質問と重複する可能性があります。
/clr スイッチといくつかの C++/CLI コードを使用して .Net コンポーネントを使用する MFC プロジェクトがあります。もともとこれはVS2005にありました。
VS2012 Update 2 にアップグレードすると、デバッグ中に、ネイティブ データ型の値または型が表示されませんでした。VS2010でネイティブデータ型可視化(natvis)の新しい仕組みが導入され、VS2012で拡張・強化されたことを知りました。そのページの情報に従って、Managed C++ Compatibility ModeとC/C++ edit and continueのチェックを外しました。この後、ブレークポイントが無効になり、ヒットしなくなりました。「Only Managed」デバッガーを使用すると、ブレークポイントにヒットしましたが、値が表示されませんでした。
最後に、「混合」デバッガーを使用__debugbreak()
して、強制的に中断しました。これにより、ローカル auto の場合にのみ整数値のみが表示されました。データ型が正しく取得されました。ただし、std::string
またはCString
値は表示されず、代わりにそのタイプが値列に表示されます。同様に、ポインター、クラス メンバー、または関数の引数の値は表示されず、型情報、未定義の値、または範囲外が値の列に表示されます。
この動作は、オート、ローカル、ウォッチ ウィンドウ、およびシンボル上のマウス ホバーで一貫しています。
VS2012 混合モード C++/CLI MFC アプリケーションでのデバッグ中にネイティブ データ型の値を表示するにはどうすればよいですか。
この質問を読み、すべてのシンボルがモジュール ウィンドウに読み込まれていることを確認しました。
どうやら、Microsoft はこの問題を認識しており、Update 3 の次の CTP で修正されるはずです。
さらに、なぜ使用する必要があるの__debugbreak()
ですか?