4

シナリオ:

  • Delphi XE、32ビットを使用して記述されたDelphiISAPIdll。

    ISAPI dllは、Win764エンタープライズデスクトップマシン上のIIS7.5を介して実行されています。

    DLLは正常に動作します。

    [実行]->[プロセスにアタッチ]を使用して、DelphiXEIDEでISAPIDLLをデバッグします。

    ISAPI DLLを起動し、デバッガーでwpw3.exe * 32プロセスに接続します。ISAPIコンテキストで実行されるコードをトレースして、デバッグできます。

問題:

  • 私のハードドライブは先週故障し、新しいWin7インストールを取得しました。これは企業全体の標準的なWin7 64 Enterpriseイメージです(以前のWin 7 64インストールとは異なります)。

    これで、[実行]-> [プロセスにアタッチ]に移動すると、wpw3.exe * 32プロセスが名前で表示されなくなりましたが、タスクマネージャーでは名前で表示されます。[プロセスにアタッチ]ダイアログボックスで[システムプロセスの表示]オプションを呼び出しても効果はありません。

    私が今見ているのは(以前の展開ではこれまで見たことのない)、PIDを使用した「一般的な」システムプロセスの長いリストですが、「システム」以外の説明はありません。

    これらのプロセスの1つは私のwpw3.exe*32プロセスであり、MSのProcessExplorerを使用してそのPIDを識別しました。しかし、そのプロセスに接続しようとすると、「プロセスを作成できません-アクセスが拒否されました」というエラーメッセージが表示されるため、デバッグできません。(同じエラーメッセージ「エラーを開くプロセス、アクセスが拒否されました」も、特定のプロパティについてProcess Explorerに表示されますが、プロセスの説明的な名前「wpw3.exe * 32」がPIDに関連付けられて表示されます。)

    [実行]->[プロセスにアタッチ]ダイアログボックスを表示して、適切なwpw3.exe * 32プロセス名を表示し、それにアタッチして、デバッグできるようにするにはどうすればよいですか?

    これはDelphiの問題ですか?IISの問題?ISAPIの問題?これは1つの問題ですか?つまり、説明的なプロセス名の欠如とプロセスにアタッチできないことは、同じ問題が原因です。または、この2つの問題があります。1つは説明的な名前がないこと、もう1つはプロセスに接続できないことです。

    (使用したくない-実際には使用できない-このためのwebAppデバッガー-これらは、IISで記述およびデバッグされたとおりに本番環境にデプロイされるISAPI dllです-IISコンテキストで実行されていることを確認する必要があります。)

  • さまざまなバージョンのDelphiを使用し、さまざまなOSおよびサーバー環境で問題なくISAPI dllを数年間デバッグしてきましたが、これまでこの問題が発生したことはありません。私は困惑しています。

4

2 に答える 2

5

私のアカウントには管理者権限がありますが、DelphiXEを管理者として実行してみてください。「管理者として実行」オプションを指定して起動してください。

「許可しますか…」というプロンプトが表示されました– [はい]をクリックすると、Delphiが実行されました。プロセスをセットアップし、コードをフックしてトレースします。プロセス名が表示され、IISプロセスに接続して、Delphiデバッガーでデバッグできます。

以前の展開では、何らかの理由でこの手順を実行する必要はありませんでしたが、問題は解決しました。

于 2012-09-14T23:45:02.763 に答える
0

64ビットOSで32ビットISAPIdllをデバッグする場合は、次のプロセスを使用できます。

これは、32ビットISAPIdllが機能するように他の手順を実行したことを前提としています。

  1. IISを停止します

    ネットストップw3svc

  2. 32ビットワーカープロセスをデバッグモードで開始します

    %SYSTEMROOT%\ SysWOW64 \ inetsrv \ w3wp -debug

  3. デバッガーでw3wpに接続します。お気づきのとおり、これを機能させるには、昇格された権限でDelphiを実行する必要があります。

于 2013-07-16T04:32:44.153 に答える