7

C++ ソリューションがあります。スタートアップ プロジェクトは exe です。ソリューションには、COM 相互運用用に登録されている多数の C# dll (.NET Framework 2.0 を対象とする) があります。C#コードにブレークポイントを配置すると、中空の赤いブレークポイントが表示されます"No native symbols in symbol file"

Project Property Pages -> Debugging -> Debugger TypeCOM メソッドを呼び出すスタートアップ プロジェクトで Mixed に設定しようとしました。

確認しDebug -> Windows -> Modulesました。dll が読み込まれ、シンボル ステータスは"No native symbols in symbol file".

これは世界の終わりではDebug -> Start Without DebuggingありませDebug -> Attach to Processん。次に、C++ コードと C# コードの両方でブレークポイントにヒットしました。Attach To:Managed (v2.0, v1.1, v1.0) code, Native code

だから私は回避策を持っていますが、プロセスにアタッチすることでそれができるかどうかを考えています-デバッグするだけでできるはずです。

実行するだけで C# ブレークポイントをヒットするにはどうすればよいDebug -> Start Debuggingですか?

4

3 に答える 3

4

次のようにして、VS2008 の C++ プロジェクトから C# dll をデバッグできました。

C++ プロジェクトのプロパティで、[構成プロパティ] -> [デバッグ] に移動します。「デバッガーの種類」を「混合」に設定します。「添付」はいいえに設定する必要があります。

C# プロジェクトのプロパティの [デバッグ] タブで、[外部プログラムの開始] を C++ プロジェクトの実行可能ファイルに設定します。

于 2013-06-05T18:36:21.047 に答える
2

少し古いことは知っていますが、問題の実用的な解決策を見つけました。

C# COM オブジェクトを使用する C++ アプリケーションを使用しているときに、同じ問題が発生しました。C++ および C# 側の Visual Studio 内でいくつかの設定を試しました。デバッガーを手動で起動するまで、何も役に立ちません。

使用できます

Debugger.Launch();

C# DLL でデバッガーを手動で開始します。これが最善ではなく、実用的な方法であることはわかっています。後の生産的な環境では、デバッガーの起動機能を削除する必要があります:)。

よろしく

于 2014-10-14T14:57:07.327 に答える
1

これが役立つかどうかはわかりませんが、私たちは C# と C++ をよく使用しています。これは、C++ プロジェクトと C# プロジェクトを同じソリューションに配置し、C# プロジェクトで「ネイティブ デバッグ」を有効にすることで可能になることがわかりました。その後、デバッグ中にそれらの間を行き来することができました。

于 2013-01-04T16:40:25.233 に答える