Debuggen eines Diensts
Sie können eine der folgenden Methoden verwenden, um Ihren Dienst zu debuggen.
Verwenden Sie Ihren Debugger, um den Dienst zu debuggen, während er ausgeführt wird. Rufen Sie zunächst den Prozessbezeichner (PiD) des Dienstprozesses ab. Nachdem Sie die PID abgerufen haben, fügen Sie an den ausgeführten Prozess an. Syntaxinformationen finden Sie in der Dokumentation, die in Ihrem Debugger enthalten ist.
Rufen Sie die DebugBreak-Funktion auf, um den Debugger für das Just-In-Time-Debuggen aufzurufen.
Geben Sie einen Debugger an, der beim Starten eines Programms verwendet werden soll. Erstellen Sie hierzu am folgenden Registrierungsspeicherort einen Schlüssel namens Optionen für die Ausführung von Imagedateien :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
Erstellen Sie einen Unterschlüssel mit demselben Namen wie Ihr Dienst (z. B. MYSERV.EXE). Fügen Sie diesem Unterschlüssel einen Wert vom Typ REG_SZ namens Debugger hinzu. Verwenden Sie den vollständigen Pfad zum Debugger als Zeichenfolgenwert. Wählen Sie im Applet Dienste-Systemsteuerung Ihren Dienst aus, klicken Sie auf Start , und aktivieren Sie Zulassen, dass Dienst mit Desktop interagiert. Der Dienst muss ein interaktiver Dienst sein, andernfalls kann der Debugger nicht auf dem Standarddesktop ausgeführt werden. Beachten Sie, dass diese Technik ab Windows Vista nicht mehr unterstützt wird, da alle Dienste in einer Sitzung ausgeführt werden, die ausschließlich für Dienste reserviert ist und die Anzeige einer Benutzeroberfläche nicht unterstützt.
Verwenden Sie die Ereignisablaufverfolgung , um Informationen zu protokollieren.
Um den Initialisierungscode eines Diensts für den automatischen Start zu debuggen, müssen Sie den Dienst vorübergehend installieren und als Bedarfsstartdienst ausführen.
Manchmal kann es erforderlich sein, einen Dienst als Konsolenanwendung zum Debuggen auszuführen. In diesem Szenario gibt die Funktion StartServiceCtrlDispatcherERROR_FAILED_SERVICE_CONTROLLER_CONNECT zurück. Achten Sie daher darauf, Ihren Code so zu strukturieren, dass dienstspezifischer Code nicht aufgerufen wird, wenn dieser Fehler zurückgegeben wird.
Zugehörige Themen