5

visual c++ 6.0 dllプロジェクトを作成し、c#コードから使用しています。今、デバッグしたいのですdllが、できません。

私はそれを行うために次のオプションを選択します。

  • visual c++私のプロジェクトコードにブレークポイントを入れてください。
  • c#dll をビルドし、プロジェクトのディレクトリにコピーします。
  • 今、私は自分のc#プロジェクトをビルドし、dll は正常に動作します (メソッドは完全に呼び出しています)。
  • 今、私はデバッグしたいdll.
  • c++ブログをフォローしてプロジェクトを開き、Attach to processから選択しますvc++
  • しかし、プロジェクトの実行中のプロセスを見つけることができませんがvisual c#、タスクマネージャープロセスでは利用できます。

私のc#プロジェクトソリューションには、2つのプロジェクトがあります。

  • Web サービス (URL アクセス時に dll メソッドを呼び出しました)
  • もう 1 つはwebform application、Web サービスを開始するものです。

dll をデバッグする方法を教えてください。私は非常に多くのブログをフォローしてきましたが、それらはすべてAttaching process、私の状態では機能しない方法に焦点を当てています. 私は何をすべきか?

4

2 に答える 2

9

アンマネージ デバッグを有効にする必要があります。どちらのシナリオでも、メイン プログラムが管理されているため、デフォルトでは有効になっていません。

C# プロジェクトで [プロジェクト] > [プロパティ] > [デバッグ] タブ > [アンマネージ コードのデバッグを有効にする] チェックボックスをオンにします。

[ツール] > [プロセスにアタッチ] で [選択] ボタンをクリックして実行します。[これらのコード タイプをデバッグする] ラジオ ボタンを選択し、[マネージド] と [ネイティブ] の両方にチェックマークを付けます。プロセスが 64 ビットの場合は、ネイティブのみに頼る必要がある場合があります。

DLL のソース コードにブレークポイントを設定し、DLL 関数を実行する C# コードを必ず記述してください。それでもブレークポイントを取得できない場合は、[デバッグ] > [ウィンドウ] > [モジュール] を使用して、モジュール リストに DLL が表示されていることを確認します。右クリックして追加のトラブルシューティング情報を取得し、[Symbol Load Information] を選択します。これは、デバッガーが PDB ファイルを検索した場所のトレースを示しています。

于 2012-12-28T12:44:10.447 に答える
0

C++ プロジェクトを C# ソリューションに追加し、(dll ではなく) プロジェクトに直接参照を追加すると、DLL をコピーする必要がなくなります。その後、C# プロジェクトの通常のデバッグ (F5) を開始するだけで、C++ プロジェクトでもブレークポイントが機能します。この方法は、デバッグに非常に快適です。このようなデバッグを試みましたが、他の設定は変更していません。

于 2012-12-28T12:58:08.347 に答える