11

C# アセンブリと C++/Cli アセンブリを使用してプロジェクトをデバッグしようとしています。

C# で定義されたインターフェイスは C++/Cli クラスによって継承され、次にネイティブ C++ クラスを呼び出します。混合モード デバッグは、C++ アセンブリと C# アセンブリの両方、およびスタートアップ .exe で有効になります。

ここで、C++ 部分をデバッグしようとすると、ややこしくなります。C++部分にブレークポイントを設定するだけでは、それらはヒットしません(ログ(など)が書き込まれ、そこで例外をスローすると、実際には正しくスローされるため、ヒットすることがわかっているにもかかわらず)。

混合モード アセンブリへの呼び出しの前に、C# での最新の呼び出しにブレークポイントを設定すると、C++/Cli コードにステップ インでき、ネイティブ部分にステップ インすることもできます。ただし、呼び出しスタックは次のように表示されます

MyMixedMode.dll!<Unknown function> Line ... 

ローカルを検査することはできません (ネイティブ コード内では、ローカル ビューは空です)。

私が間違っているかもしれないアイデアはありますか?

4

2 に答える 2

12

私は解決策を見つけました:プロジェクトの混合モードのデバッグ設定だけでは十分ではありません。さらに、Visual Studio では有効にする必要があります。

[x] Use Managed Compatibility Mode

ツール - >オプション - >デバッグ - >一般で。

于 2013-10-22T08:39:03.080 に答える