2009-07-29 13 views
2

私は、/ clrフラグがオンになっている別のDLLをロードするために 'LoadLibrary'を呼び出すネイティブC Dllを持っています。次に、GetProcAddressを使用して関数を取得し、動的にロードされたdllで呼び出します。私はデバッガでダイナミックライブラリに入ることを望みますが、シンボルは決して読み込まれません。何か案が?ネイティブC /マネージC++デバッグ

そして私は、私は、Visual Studioに2008

アップデートを使用していると述べている必要があります。以下のいくつかのヒントのおかげで、私はミックスに、プロジェクトのデバッグを変更しました。それはうまくいきませんでしたが、私は理由を知っていると思います。私は既存のアプリケーションにアドインを開発しています。私が接続しているアプリケーションは1つのexeを起動し、別のexeを開始します。だから、私は、 "Attach to process"を使ってデバッガを起動する必要があります。私の推測では、デバッガを起動すると、デフォルトで「自動」になります。 "Mixed"デバッグを使用するためにVSのデフォルトの動作を変更する方法はありますか?

答えて

4

これはVS2008のものですが、VS2005が正しく覚えていれば似ています。ネイティブプロジェクトのプロパティの[設定プロパティ - >デバッグ]には、デフォルトで[自動]に設定されている[デバッガタイプ]があります。あなたは管理されたデバッグが必要であることを実現するにはVSがスマートではないので、それを "Mixed"に変更する必要があります

1

私はVisualStudioでこれと同様のことをしている経験を重ねてきました。 ProcMonを使用して、VisualStudioがPDBファイルを探している場所を確認することができます。また、WinDbgを使用することもできます。シンボルの読み込みではうまくいくように見えますが、そうでない場合は、明示的に読み込むことができます。 WinDbgを使用するには、急な学習曲線に乗ることが必要ですが、今は時間を燃やしているなら、それは価値がありませんか?

また、exeを独自に実行し、管理対象DLLのソースからexeをデバッグするプロセスにアタッチすることもできます。

1

デバッグに興味のある最初のコードが入力された場所で、CLR例外がスローされるように、混在モードのDLLを変更します。これにより、マネージデバッガを起動する機会が与えられます。

1

VS2005には、ネイティブとCLRのデバッガを別々に有効にするプロジェクトごとのオプションがあります。デバッガを起動するネイティブDLLプロジェクトに対してCLRデバッガを有効にする必要があります。

関連する問題