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.
Wenn eine Benutzermodusanwendung bereits ausgeführt wird, kann der Debugger sie nicht invasiv debuggen. Bei dem nichtinvasiven Debugging stehen Ihnen nicht so viele Debugging-Aktivitäten zur Verfügung. Sie können jedoch die Interferenzen des Debuggers mit der Zielanwendung minimieren. Nicht invasives Debuggen ist nützlich, wenn die Zielanwendung nicht mehr reagiert.
Im nichtvasiven Debuggen wird der Debugger nicht tatsächlich an die Zielanwendung angefügt. Der Debugger hält alle Threads des Ziels an und hat Zugriff auf den Speicher des Ziels, die Register und andere ähnliche Informationen. Der Debugger kann das Ziel jedoch nicht steuern, sodass Befehle wie g (Go) nicht funktionieren.
Wenn Sie versuchen, Befehle auszuführen, die während des nichtvasiven Debuggings nicht zulässig sind, erhalten Sie eine Fehlermeldung, die besagt: "Der Debugger ist nicht angefügt, sodass die Prozessausführung nicht überwacht werden kann."
Auswählen des zu debuggenden Prozesses
Sie können die Zielanwendung durch die Prozess-ID (PID) oder den Prozessnamen angeben.
Wenn Sie die Anwendung anhand des Namens angeben, sollten Sie den vollständigen Namen des Prozesses verwenden, einschließlich der Dateinamenerweiterung. Wenn zwei Prozesse denselben Namen haben, müssen Sie stattdessen die Prozess-ID verwenden.
Weitere Informationen zum Ermitteln der Prozess-ID und des Prozessnamens finden Sie unter Suchen der Prozess-ID.
Informationen zum Starten und Beenden einer nicht invasiven Debugsitzung finden Sie in den folgenden Themen:
- Debuggen eines User-Mode Prozesses mithilfe von WinDbg
- Debuggen eines User-Mode Prozesses mithilfe von CDB
CDB-Befehlszeile
Wenn Sie einen laufenden Prozess nichtinvasiv über die CDB-Befehlszeile debuggen möchten, geben Sie die Option -pv, die Option -p und die Prozess-ID im folgenden Syntax an.
cdb -pv -pProcessID
Oder verwenden Sie zum nichtinvasiven Debuggen eines ausgeführten Prozesses durch Angeben des Prozessnamens stattdessen die folgende Syntax.
cdb -pv -pnProcessName
Es gibt mehrere weitere nützliche Befehlszeilenoptionen. Weitere Informationen zur Befehlszeilensyntax finden Sie unter CDB Command-Line Optionen.
WinDbg-Befehlszeile
Um einen ausgeführten Prozess nicht-invasiv von der WinDbg-Befehlszeile aus zu debuggen, geben Sie die Option -pv, die Option -p und die Prozess-ID in der folgenden Syntax an.
windbg -pv -pProcessID
Oder verwenden Sie zum nichtinvasiven Debuggen eines ausgeführten Prozesses durch Angeben des Prozessnamens stattdessen die folgende Syntax.
windbg -pv -pnProcessName
Es gibt mehrere weitere nützliche Befehlszeilenoptionen. Weitere Informationen zur Befehlszeilensyntax finden Sie unter WinDbg Command-Line Optionen.
WinDbg-Menü
Wenn Sich WinDbg im Ruhezustand befindet, können Sie einen laufenden Prozess nicht invasiv debuggen, indem Sie im Menü "Datei" auf "An einen Prozess anfügen" klicken oder F6 drücken.
Wenn das Dialogfeld "An Prozess anfügen" angezeigt wird, aktivieren Sie das Kontrollkästchen "Nichtvasiv". Wählen Sie dann die Zeile aus, die die prozess-ID und den gewünschten Namen enthält. (Sie können auch die Prozess-ID im Feld "Prozess-ID" eingeben.) Klicken Sie abschließend auf "OK".
Debugger-Befehlsfenster
Wenn der Debugger bereits aktiv ist, können Sie einen laufenden Prozess nicht invasiv debuggen, indem Sie den Befehl ".attach -v (An Prozess anfügen)" im Fenster "Debuggerbefehl" verwenden.
Sie können den Befehl ".attach" verwenden, wenn der Debugger bereits einen oder mehrere Prozesse invasiv debuggen soll. Sie können diesen Befehl in CDB verwenden, wenn er ruhend ist, aber nicht in einem ruhenden WinDbg.
Wenn der Befehl ".attach" -v erfolgreich ist, debuggt der Debugger den angegebenen Prozess, wenn der Debugger das nächste Mal einen Ausführungsbefehl ausgibt. Da die Ausführung während des nicht invasiven Debuggens nicht zulässig ist, kann der Debugger nicht mehrere Prozesse gleichzeitig debuggen. Diese Einschränkung bedeutet auch, dass die Verwendung des Befehls ".attach" -v eine vorhandene invasive Debugsitzung möglicherweise weniger effektiv macht.
Starten der Debugsitzung
Weitere Informationen zum Starten einer Debugsitzung finden Sie unter Debugger-Vorgang.