1

Visual Studio 6.0 形式のままにしなければならない古い C++ COM コンポーネントがあります。私は一生、実際の COM コンポーネントでコードをデバッグする方法を理解できません。

デバッグ モードでビルドし、ブレークポイントを追加して、dllhost.exe プロセスにアタッチすることはできますが、Visual Studio 環境では、ソース コードではなく、dllhost.exe からの逆アセンブリのみが表示されます (停止しません)。ブレークポイントで)。

少し前に、IIS (または inetinfo.exe) をデバッグ アクションのターゲットにする方法があり (つまり、Visual Studio 6.0 が実行可能ファイルで dll を起動するように要求した場合)、IIS はシングル プロセス モードで実行されました。変更が必要なレジストリ キーがありましたが、Google で検索しても解決しませんでした。

4

2 に答える 2

2

VB6 ベースの COM コンポーネントの場合、プロジェクトを VB6 で開いて実行できます (DLL プロジェクトは実行できません)。プロジェクトのプロパティには、それ自体を実行して登録するように実行するように要求できるオプションがあります。

次に、COM コンポーネントを呼び出す ASP ページにアクセスしてみます。呼び出しは ASP ページから行われるため、クラス ファイルに設定されたブレークポイントがヒットします。

于 2008-12-16T02:25:55.743 に答える
0

まず、PDB ファイル (コンパイル中に生成される) は、DLL と同じディレクトリにある必要があります (プロジェクトのプロパティで設定できます)。

オブジェクトが ASP 固有の機能 (Request、Response、Session オブジェクト) を使用しない場合は、その呼び出しコードを .vbs ファイルにコピーし、cscript.exe your.vbsをデバッグ ターゲット プログラムとして設定してデバッグできます。

ISAPI DLL をデバッグする方法について (たとえば) 説明があります。COM オブジェクトにも適用できます (OS/デバッガの観点からは、どちらも IIS プロセスにロードされる DLL です)。IIS のバージョンとプロセス内/プロセス外のものに注意してください。

最後に、他に何も役に立たない場合は、OutputDebugString関数を使用してログを追加し、無料の DebugViewプログラムで確認できます。

于 2008-12-16T06:17:44.370 に答える