2012-12-28 5 views
5

visual c++ 6.0 dllプロジェクトを作成し、それを私のc#コードから使用しました。今私はdllをデバッグしたいが、私はそれを行うことができません。C#プロジェクトからC++ DLLをデバッグするには?

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

  • は私のvisual c++プロジェクトコードでの限界点を置きます。
  • dllをビルドし、私のc#プロジェクトのディレクトリにコピーします。
  • 今私は私のc#プロジェクトを構築し、DLLはうまく動作します(完全に呼び出されています)。
  • dllをデバッグします。
  • 私はブログに従ってc++プロジェクトを開いて、からvc++までAttach to processを選択します。
  • 私はvisual c#プロジェクトの実行中のプロセスを見つけることができませんが、タスクマネージャプロセスでは利用可能です。私は2つのプロジェクトを持っている私のc#プロジェクトソリューションで

  • すなわちウェブサービス(私はURLにアクセスする時には、DLLのメソッドを呼び出した)
  • もう一つは、Webサービスを開始するwebform applicationです。

ここで私のDLLをデバッグする方法を教えてください。私は非常に多くのブログに従ってきましたが、私の条件で働いていない方法はすべてAttaching processに集中しています。私は何をすべきか?

答えて

9

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

Project> Properties> Debugタブで、[管理されていないコードのデバッグを有効にする]チェックボックスをオンにしてC#プロジェクトで実行します。

[ツール]> [プロセスにアタッチ]で、[選択]ボタンをクリックします。 [これらのコードタイプをデバッグする]ラジオボタンを選択し、[管理]と[ネイティブ]の両方にチェックマークを付けます。あなたのプロセスが64ビットの場合、ネイティブのみに頼らざるを得ないかもしれません。

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

+0

私はデバッグをアンマネージしようとしましたが、私は私が1つのWebサービスプロジェクトと私のソリューションにformApplicationを持っていると言います。私は2番目のプロジェクトでそれを有効にしましたが、最初のプロジェクトではこのようなオプションは見つけられませんでした –

+0

https://dl.dropbox.com/u/20476478/Untitledをご覧ください。png –

+0

あなたが気にしないなら、私たちは5分間チャットをすることができますか? –

0

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

+0

これを行うには、私はC#プロジェクトで書かれたすべてのコードフローを変更する必要があります –

+0

私はなぜこれについてコードフローを変更する必要があるのか​​分かりません、プロジェクト参照へのDLL参照を変更する必要があります。それとも私は何かが恋しい? – SergeyS

+0

はい私はVisual C++プロジェクトに関連した '.lib'を持っているので問題があります –

関連する問題