Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein Debugger kann automatisch gestartet werden, wenn die Dienstanwendung gestartet wird. Alternativ kann es automatisch gestartet werden, wenn die Dienstanwendung auf eine Ausnahme stößt oder einen DebugBreak-Befehl ausführt. Wenn Sie eine dieser Methoden ausgewählt haben, wird in diesem Thema erläutert, wie Sie vorgehen. Wenn Sie nicht sicher sind, welche Methode Sie auswählen sollen, finden Sie weitere Informationen unter Auswählen der besten Methode.
Verwenden Sie dann das folgende Verfahren:
Führen Sie einen der folgenden Vorbereitungsschritte aus:
- Wenn Sie planen, die Dienstanwendung von Anfang an zu debuggen, einschließlich des Initialisierungscodes, führen Sie das unter Aktivieren des Debuggens des Initialisierungscodes beschriebene Verfahren aus. Wenn die Dienstanwendung auch in den Debugger einbricht, wenn sie abstürzt oder auf eine Ausnahme stößt, führen Sie alternativ das unter Aktivieren des Break in den Debugger für die Dienstanwendung beschriebene Verfahren aus.
- Um sicherzustellen, dass die Dienstanwendung die ordnungsgemäße Ausführung des Debuggers zulässt, führen Sie das unter Anpassen des Dienstanwendungstimeouts beschriebene Prozedur aus.
- Wenn der Dienst mit anderen Diensten in einem einzelnen SvcHost-Prozess kombiniert wird, führen Sie die unter Isolieren des Diensts beschriebene Prozedur aus.
Wenn der Dienst bereits ausgeführt wird, müssen Sie ihn neu starten, damit diese Änderungen wirksam werden. Es wird empfohlen, Windows selbst neu zu starten, um alle Auswirkungen des ausgeführten Diensts zu entfernen. Wenn Sie Windows nicht neu starten möchten, verwenden Sie die folgenden Befehle, wobei ServiceName der Name des Diensts ist:
net stop ServiceName net start ServiceName
Wenn Sie den Initialisierungscode der Dienstanwendung debuggen möchten, wird der Debugger beim Starten des Diensts gestartet und an die Dienstanwendung angefügt.
Wenn Sie sich dafür entschieden haben, den Debugger durch eine Ausnahme auszulösen, wird die Dienstanwendung normal ausgeführt, bis sie auf eine Ausnahme stößt oder eine DebugBreak-Funktion ausführt. An diesem Punkt wird der Debugger gestartet und an die Dienstanwendung angefügt.
Der nächste Schritt hängt von der Debuggerbefehlszeile ab, die Sie in Schritt 1 angegeben haben:
- Wenn Sie einen Debugger ohne Remotingoptionen angegeben haben, wird dieser Debugger gestartet, und sein Fenster wird sichtbar.
- Wenn Sie NTSD mit den Optionen -server und -noio angegeben haben, wird NTSD ohne Konsolenfenster gestartet. Sie können dann von einem anderen Computer aus eine Verbindung mit der Debugsitzung herstellen, indem Sie einen beliebigen Benutzermodusdebugger mit dem Parameter -remote starten. Anweisungen finden Sie unter Aktivieren eines Debugclients.
- Wenn Sie NTSD mit der Option -d angegeben haben, wird NTSD ohne Konsolenfenster gestartet. Anschließend können Sie eine Verbindung mit der Debugsitzung herstellen, indem Sie den Kerneldebugger verwenden, der auf einem anderen Computer ausgeführt wird. Anweisungen finden Sie unter Steuern des User-Mode Debuggers über den Kerneldebugger.
- Wenn Sie NTSD mit den Optionen -ddefer und -server angegeben haben, wird NTSD ohne Konsolenfenster gestartet. Anschließend können Sie eine Verbindung mit der Debugsitzung herstellen, indem Sie sowohl einen Kerneldebugger als auch einen Remotedebugger im Benutzermodus verwenden, der auf einem anderen Computer als dem Dienst ausgeführt wird (möglicherweise jedoch auf demselben Computer wie der andere). Anweisungen finden Sie unter Kombinieren dieser Methode mit Remotedebuggen.
Wenn der Debugger gestartet wird, wird der Dienst am anfänglichen Prozess-Haltepunkt, der Ausnahme oder dem DebugBreak-Befehl angehalten. Auf diese Weise können Sie den aktuellen Zustand der Dienstanwendung untersuchen, Haltepunkte festlegen und andere gewünschte Konfigurationsoptionen treffen.
Verwenden Sie g (Go) oder einen anderen Ausführungsbefehl, um die Ausführung der Dienstanwendung fortzusetzen.