VC6.0で開発したMFCアプリケーション(EXE)から
VS2008 C#で作成したマネージドDLLのデバッグ
(トレースやブレーク)ができません。
現状、マネージドDLLをRegAsmにより登録し関数の呼び出し自体は
問題なく行えます。
しかしデバッグはできません。
■試したこと
・マネージドDLLはDebugでコンパイルし、生成されたDLLとPDBは
EXEと同じ階層におきました。
・VC6.0側もDebugでコンパイルしました。
・VC6.0側の[プロジェクト]-[設定]-[デバッグ]のカテゴリで
「追加するDLL」に上記マネージドDLLを設定しチェックしました。
・この状態で実行すると「~.dllにはデバッグ情報がありません」と
ダイアログがでます。
・このまま続行し、DLL関数の呼び出しの手前でブレークさせても
関数の中へステップインできません。
(ステップインしたいです。)
そもそもVC6からマネージドDLLをデバッグすることは不可能な
ことなのでしょうか?
以上よろしくお願いいたします。
> VC6.0で開発したMFCアプリケーション(EXE)から
> VS2008 C#で作成したマネージドDLLのデバッグ
>(トレースやブレーク)ができません。
> そもそもVC6からマネージドDLLをデバッグすることは不可能な
> ことなのでしょうか?
VC6ではC#はサポートしていないので、無理でしょう。
VS2008 C#で作成したDLLはVS2008でないとデバッグ出来ないでしょう。
(C#には詳しくないけど。)
VS2008 C#の[プロジェクトプロパティ]-[デバッグ]-[開始動作]に「外部プログラムの開
始」というラジオボタンがあるから、そこで呼び出し元のプログラムを指定すればいい
んじゃないかな。
もっとも呼び出し側のプログラム(VC6で作成したもの)は正しくリンクしておく必要が
あります。
> ・このまま続行し、DLL関数の呼び出しの手前でブレークさせても
> 関数の中へステップインできません。
> (ステップインしたいです。)
VS2008側で呼び出される関数にブレークポイントを設定しておけばいいのでは?
maru様 ご回答ありがとうございます。
おっしゃる通り、DLL側のプロジェクト(VS2008 C#)からであれば
外部プログラムの設定とアンマネージドデバッグを有効にすることで、
DLLの中もEXEの中もデバッグできました。
ありがとうございました。