Wenn Sie eine Internetservererweiterungs-DLL geschrieben haben, ist Sie möglicherweise daran interessiert, es unter dem Debugger ausgeführt, so dass Sie ihre Ausführung, Breakpoints gesetzt sowie oder Monitor Variablenwerte verfolgen können, nachdem die Erweiterung aufgerufen wird. Microsoft Internet Information Server (IIS) unternehmungslustig mit Ihrer DLL im Debugger ist ein wenig kompliziert. Sie müssen zuerst einen ruhigen Server finden, können Sie die DLL in einer kontrollierten Umgebung debuggen. Wenn Sie eine solche Ressource gefunden haben, können Sie beginnen, Ihre DLL Debuggen.
Aufgrund der Unterschiede zwischen Version 3.0 und 4.0 von IIS ist es wichtig zu wissen, welche Version Sie verwenden, um die DLL Debuggen.
Gehen Sie folgendermaßen vor um Debuggen Sie eine Internetservererweiterungs-DLL, die mit IIS 3.0:
-e W3Svc
Debuggen Tipps
Der IIS kann als eine interaktive Anwendung ausgeführt werden, das viel einfacher debuggen. Dazu müssen Sie einige Änderungen an Ihrem System vornehmen. Für das Benutzerkonto, das Sie sich zu den Server unter führen, müssen Sie einige Berechtigungen hinzufügen.
Um Berechtigungen hinzuzufügen, führen Sie Benutzer-Manager. (Wenn Sie Windows NT 3.51 verwenden, führen Sie MUSRMGR.EXE. Wenn Sie Windows NT 4.0 verwenden, führen Sie USRMGR.EXE.) Klicken Sie im Menü Richtlinien auf Benutzerrechte . Aktivieren Sie das Kontrollkästchen Erweiterte Benutzerrechte anzeigen . Dann wählen Sie aus der Dropdown-Liste auf der rechten Seite als Teil des Betriebssystems handeln , und fügen Sie den Benutzer-account.
Wiederholen Sie diesen Vorgang mit Generieren von Sicherheitsüberwachungen (auch in der Dropdown Liste auf der rechten Seite). Stellen Sie sicher, dass alle Internet-Dienste (WWW, ftp und Gopher) beendet werden und INETINFO.EXE nicht ausgeführt wird (verwenden Sie TLIST prüfen). Abmelden und wieder anmelden. Sie können dann laden die IIS mit der Befehlszeile:
INetInfo.Exe -e W3Svc
Um IIS unter einem Debugger (z. B. unter WinDbg) zu laden, verwenden Sie die folgende Befehlszeile:
WinDbg INetInfo.Exe -e W3Svc
Sie sind bereit zu gehen. Zeigen Sie in Visual C++ im Menü Erstellen , Debuggen und klicken Sie dann auf Go. Dieser Aktion wird den WWW-Publishingdienst gestartet wird, und des Debuggers bewusst der Symbole in der DLL. Sie können diese Warnung ignorieren, dass die Datei nicht debugging-Informationen.
Wenn Sie Visual C++ schließen, speichern Sie den Arbeitsbereich für INETINFO.EXE. Auf diese Weise können Sie vermeiden Sie die Einstellungen für die Debugsitzung erneut eingeben. Öffnen Sie einfach den INETINFO.MDS-Arbeitsbereich-Datei Wenn Sie bereit sind, den Debugger erneut starten.
Zwischengespeicherte DLLs
Sie können die Registrierungseinstellung auf HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W3SVC/Parameters/CacheExtensions den Server DLLs jedes Mal neu zu initialisieren, die sie verwendet werden, anpassen. Wenn diese Einstellung 1 ist, wird der Server DLLs geladen im Speicher so lange wie möglich halten. Dies ist die Standardeinstellung für den Server, da es hilft den Server Höchstleistung zu erreichen, und nur geändert werden, sollten wenn Sie den Server zum Debuggen verwenden. Wenn Sie die Einstellung vornehmen 0, der Server wird immer neu Erweiterungs-DLLs jedes Mal, wenn sie verwendet werden.
Zwingt den Server zu laden die DLL ist hilfreich, wenn Ihre DLL möglicherweise abstürzt oder stören alle per-Instanz-Daten, die sie unterhält. Zwingt den Server, die DLL zu initialisieren, können Sie Ihre DLL zurück in einer vorhersagbaren Status mit wenig Aufwand erhalten. Testen Sie die DLL mit der normale CacheExtensions-Einstellung, allerdings nicht, um sicherzustellen, dass Code in der DLL völlig abhängig von diesem ursprünglichen Zustand.
Es gibt mehrere Möglichkeiten zur Schaffung einer Umgebung für das Debuggen von Serverkomponenten und Internetservererweiterungs-DLLs bei Verwendung von IIS 4.0 oder höher. Wenn Sie einen Debugger Anfügen an einen Windows NT-Prozess kann verwenden, können Sie diese Funktionalität Ihrer Komponente oder Erweiterung zu debuggen. Zum Beispiel beim Debuggen mit Visual C++, die folgenden Schritte:
Wenn der Debugger, den Sie verwenden eine Windows NT-Prozess angehängt werden kann, nehmen Sie die folgenden Schritte aus, um eine geeignete Debugumgebung einzurichten:
Debugger = Lt; DebuggerExeName > wo DebuggerExeName den vollständigen Pfad zu dem Debugger ist Sie verwenden.
Wenn das World Wide Web-Publishingdienst gestartet wird, wird auch der Debugger gestartet werden. Sie können jetzt geeigneten Haltepunkte in Ihrem Internet-Server-Erweiterungs-DLL festlegen.
Sie werden nicht in der Lage, Haltepunkte im Quellcode einer Komponente festlegen, bis die Komponente in den Speicher geladen wurde. Um dies zu tun, starten Sie Internet Explorer und Ansicht der.ASP-Seite, die das Objekt enthält. Sobald die Seite geladen wird, sollten Sie in der Lage, Haltepunkte in der Komponente festgelegt sein. Klicken Sie auf Aktualisieren , um die Seite erneut anzuzeigen, und lösen Sie die ausgewählten Haltepunkte aus. Wenn die Komponente nicht einmal geladen werden kann (beispielsweise, wenn der Fehler im Startcode der Komponente auftritt), müssen Sie die Komponenten-DLL zu laden, vor dem Starten der Debugsitzung. (Siehe Schritt 11 unten.)
In einigen Fällen können Sie nicht eine der beiden oben beschriebenen Verfahren verwenden können. Wenn Sie mithilfe dieser Strategien Schwierigkeiten haben, gibt es ein dritter Ansatz, der in früheren Versionen von IIS beschrieben wurde. Dieser dritte Ansatz erfordert die Einrichtung von Windows NT-Sicherheitsberechtigungen sowie Änderungen an der Registrierung vornehmen. Es wird auch Ihre Fähigkeit, Ausführen von IIS als Dienst deaktivieren. Dieser Ansatz sollte nur verwendet werden, wenn die vorherigen beiden Strategien versagt haben.
{61738644-F196-11D0-9953-00C04FD919C1} / / IIS WAMREG Admin Service
{9F0BD3A0-EC01-11D0-A6A0-00A0C922E752} / / IIS Admin Crypto-Erweiterung
{A9E69610-B80D-11D0-B9B9-00A0C922E750} / / IISADMIN-Dienst
Das LocalService-Schlüsselwort kann in weitere Unterschlüssel des AppID gefunden werden.
C:\WINNT\System32\Inetsrv\Inetinfo.exe
w3svc -e
Hinweis&Nbsp; Nachdem Sie die Debugsitzung abgeschlossen haben, müssen Sie Schritte 5 bis 1 auf die vorherigen Einstellungen wiederherstellen und IIS als Dienst ausführen stornieren.
Technische Hinweise von &Nummer |nbsp; Technische Hinweise nach Kategorie