- - PR -
VS.NETでのDLLデバッグ
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-05-29 23:13
いつもお世話になっております。
この度は、みなさんがVS.NETでどのようにしてDLLプロジェクトをデバッグしているかを参考にさせていただきたいと思い、投稿しました。 具体的には同じソリューション内にEXEプロジェクトとDLLプロジェクトが一つずつあって、DLLのデバッグをソリューション内のEXEから呼び出して行いたい場合です。 普通にDLL内のソースコードにブレークポイントを置いただけだと、ブレークポイントがうまく機能しません。デバッグを開始するとブレークポイントが警告グリフ(丸印の上に?印)になって、「このドキュメントのシンボルが読み込まれていません」と言われています。 ヘルプで調べてみると、以下のようにいくつかそれらしいものが載っています。
この2つから、プロジェクト内のDLLは読み込まれておらず、違うDLLが読み込まれているのではないかと思って探してみると、どうもEXEからDLLへ参照設定を行ったときに自動的にEXEがあるフォルダにDLLがコピーされるような設定がデフォルトになっていました。DLLを自動的にコピーしないようにする設定があったので、そうしてみると今度はDLLが見つからないというエラーが起こりました。これも調べてみるとプライベートアセンブリに関しては、アプリケーションのベースディレクトリ以下に配布しないとだめみたいで、今回の場合プロジェクトフォルダが同じ階層にあるため、当然、EXEがある場所(....\\bin\\debug\\XXX.exe)より下位にDLLはありません。 Exeがある場所にDLLプロジェクトを移動してもいいのですが、ちょっとスマートじゃありません。 どなたか、DLLプロジェクトのデバッグでよい方法をご存知でしたら、是非ご指導お願いいたします。 | ||||||||
|
投稿日時: 2003-05-30 09:42
リリースビルドになっていませんか?
| ||||||||
|
投稿日時: 2003-05-30 12:16
え?できていますけど?
ただ、C++でDLLを作ると、ややこしかったように思います。VB.NET、C#のWindows Formだと、特に何の苦労もしていません。WebサービスやWebアプリケーションにすると、おっしゃるようなことが起こったように思います。このときは、テスト用のWindows Formを用意して、そちらでデバッグしています。 | ||||||||
|
投稿日時: 2003-05-30 12:48
ずっとデバッグモードで実行していましたが、突如できるようになりました
お騒がせしました。(どうも途中で名前空間やアセンブリ名を変えたのがまずかったのかな・・・) | ||||||||
|
投稿日時: 2003-05-30 13:14
私のところでも突如できなくなったりします。
以下のことを確認するようにしています。 1.リリースモードになっていないか? 2.デバッグ情報(pdb)の作成がOFFになっていなか? たいていは直るのですがたまに難物がいたりします。 そのときはお手上げだったりします。 | ||||||||
|
投稿日時: 2003-05-30 16:15
こんにちは。
便乗質問です。
VC++.netには、このような「自動的にEXEがあるフォルダにDLLがコピーされる」機能は無いのでしょうか? いつも腕力でターゲットフォルダにDLLをコピーしています。 皆さんはどのようにされているのでしょうか? | ||||||||
|
投稿日時: 2003-05-30 16:37
C++の.NETのプロジェクトは自動的にやってくれてます。 その他のプロジェクトはやったことないです。 自動的化できる部分はビルドイベントを使っています。 ビルド前,リンク前,ビルド後にコマンドを打つことができますしね。 | ||||||||
|
投稿日時: 2003-05-31 08:35
FOXさん、皆さんお世話になっています。
C++ の MFCプロジェクトのことを、想定しています。 新規プロジェクトを作り、使いまわしクラス群のDLLを既存プロジェクトと追加しただけでは、自動ではやってくれません。 ちなみに、.netプロジェクトに既存DLLプロジェクトを追加してみましたが、自動で設定はできていないようです。 新規プロジェクトとして追加をすれば、自動で設定できるのでしょうか? 確かに、ビルド後にコピーをやらせれば、複写はできることがわかるのですが、設定で自動でやれるなら使いたいなと思っています。 私のやり方が、おかしいのでしょうか? |
1