VC6からマネージドDLLのデバッグ方法

[戻る]
2011/04/21(木) 14:00:51
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をデバッグすることは不可能な
ことなのでしょうか?

以上よろしくお願いいたします。

maru 2011/04/21(木) 14:58:29
> VC6.0で開発したMFCアプリケーション(EXE)から
> VS2008 C#で作成したマネージドDLLのデバッグ
>(トレースやブレーク)ができません。

> そもそもVC6からマネージドDLLをデバッグすることは不可能な
> ことなのでしょうか?
VC6ではC#はサポートしていないので、無理でしょう。

VS2008 C#で作成したDLLはVS2008でないとデバッグ出来ないでしょう。
(C#には詳しくないけど。)
VS2008 C#の[プロジェクトプロパティ]-[デバッグ]-[開始動作]に「外部プログラムの開
始」というラジオボタンがあるから、そこで呼び出し元のプログラムを指定すればいい
んじゃないかな。
もっとも呼び出し側のプログラム(VC6で作成したもの)は正しくリンクしておく必要が
あります。

>  ・このまま続行し、DLL関数の呼び出しの手前でブレークさせても
>   関数の中へステップインできません。
>   (ステップインしたいです。)
VS2008側で呼び出される関数にブレークポイントを設定しておけばいいのでは?

2011/04/21(木) 15:23:18
[[解決]]
maru様 ご回答ありがとうございます。

おっしゃる通り、DLL側のプロジェクト(VS2008 C#)からであれば
外部プログラムの設定とアンマネージドデバッグを有効にすることで、
DLLの中もEXEの中もデバッグできました。

ありがとうございました。

古いスレッドには追加発言できません。