Anfügen an laufende Prozesse mit dem Visual Studio Debugger

Sie können den Visual Studio-Debugger an einen laufenden Prozess auf einem lokalen oder Rmotecomputer anfügen. Sobald der Prozess ausgeführt wird, wählen Sie Debuggen>An den Prozess anhängen aus, oder drücken Sie in Visual Studio STRG+ALT+P, und verwenden Sie das Dialogfeld An den Prozess anhängen, um den Debugger an den Prozess anzuhängen.

Sie können An den Prozess anhängen verwenden, um laufende Apps auf lokalen oder Remotecomputern zu debuggen, um mehrere Prozesse gleichzeitig zu debuggen, um Apps zu debuggen, die nicht in Visual Studio erstellt wurden, oder um Apps zu debuggen, die Sie nicht von Visual Studio aus mit dem angehängten Debugger gestartet haben. Wenn Sie z. B. eine App ohne den Debugger ausführen und eine Ausnahme auslösen, dann können Sie den Debugger an den Prozess anhängen, der die App ausführt, und mit dem Debuggen beginnen.

Tipp

Sind Sie nicht sicher, ob Sie An den Prozess anhängen für Ihr Debugszenario verwenden sollen? Weitere Informationen finden Sie unter Allgemeine Debugszenarien.

Anhängen an einen laufenden Prozess auf dem lokalen Computer

Informationen zum schnellen erneuten Anhängen an einen Prozess, an den Sie zuvor angehängt haben, finden Sie unter Erneutes Anhängen an einen Prozess.

So hängen Sie einen Prozess auf dem lokalen Computer an

  1. Wählen Sie in Visual Studio Debuggen>An den Prozess anhängen aus (oder drücken Sie STRG+ALT+P), um das Dialogfeld An den Prozess anhängen zu öffnen.

  2. Überprüfen Sie den Verbindungstyp.

    In den meisten Szenarien können Sie Standard verwenden. Für einige Szenarien ist möglicherweise ein anderer Verbindungstyp erforderlich. Weitere Informationen finden Sie in den anderen Abschnitten dieses Artikels oder unter Allgemeine Debugszenarien.

  3. Legen Sie das Verbindungsziel auf den Namen Ihres lokalen Computers fest.

    Screenshot: Dialogfeld „An den Prozess anhängen“ mit Festlegung des Verbindungsziels auf den Namen des lokalen Computers

    Screenshot: Dialogfeld „An den Prozess anhängen“ mit Festlegung des Verbindungsziels auf den Namen des lokalen Computers

  4. Suchen und wählen Sie in der Liste Verfügbare Prozesse den Prozess oder die Prozesse aus, die Sie anhängen möchten.

    • Geben Sie zur schnellen Auswahl eines Prozesses seinen Namen oder den Anfangsbuchstaben in das Feld Prozesse filtern ein.

    • Wenn Sie den Prozessnamen nicht kennen, durchsuchen Sie die Liste, oder lesen Sie Allgemeine Debugszenarien, um einige gängige Prozessnamen zu erhalten.

    Tipp

    Prozesse können im Hintergrund gestartet und beendet werden, während das Dialogfeld An den Prozess anhängen geöffnet ist, sodass die Liste der aktiven Prozesse möglicherweise nicht immer aktuell ist. Sie können jederzeit Aktualisieren auswählen, um die aktuelle Liste anzuzeigen.

  5. Stellen Sie sicher, dass im Feld Anfügen an der Typ des zu debuggenden Codes aufgeführt ist. Die Standardeinstellung Automatisch funktioniert für die meisten App-Typen.

    Wenn Sie den Verbindungstyp Standard verwenden, können Sie den Typ des Codes, den Sie anfügen möchten, manuell auswählen. Andernfalls ist die Option Auswählen möglicherweise deaktiviert.

    So wählen Sie Codetypen manuell aus

    1. Klicken Sie auf Auswählen.
    2. Wählen Sie im Dialogfeld Codetyp auswählen die Option Diese Codetypen debuggen aus. Wenn beim Versuch, einen Prozess in der Liste anzufügen, ein Fehler auftritt, können Sie das Dialogfeld Codetyp auswählen verwenden, um die Problembehandlung zu erleichtern.
    3. Wählen Sie die zu debuggenden Codetypen aus.
    4. Klicken Sie auf OK.
  6. Wählen Sie Anfügen aus.

Tipp

Verwenden Sie in dem Szenario, in dem Sie über mehrere identische Prozesse verfügen, die Befehlszeilenspalte oder die w3wp-Prozessdetails aus der Spalte „Titel“, um den richtigen Prozess zu identifizieren.

Hinweis

Sie können zum Debuggen an mehrere Apps angefügt werden, aber jeweils nur eine App ist im Debugger aktiv. Sie können die aktive App auf der Visual Studio-Symbolleiste Debugspeicherort oder im Fenster Prozesse festlegen.

Anfügen an einen Prozess auf einem Remotecomputer

Sie können auch einen Remotecomputer im Dialogfeld An den Prozess anhängen auswählen, eine Liste verfügbarer Prozesse anzeigen, die auf diesem Computer ausgeführt werden, und an einen oder mehrere der Prozesse zum Debuggen anhängen. Der Remotedebugger (msvsmon.exe) muss auf dem Remotecomputer ausgeführt werden. Weitere Informationen finden Sie unter Remotedebuggen.

Ausführlichere Anweisungen zum Debuggen von ASP.NET-Anwendungen, die für IIS bereitgestellt wurden, finden Sie unter Remotedebuggen von ASP.NET auf einem IIS-Remotecomputer.

So fügen Sie an einen aktiven Prozess auf einem Remotecomputer an

  1. Wählen Sie in Visual Studio Debuggen>An den Prozess anhängen aus (oder drücken Sie STRG+ALT+P), um das Dialogfeld An den Prozess anhängen zu öffnen.

  2. Überprüfen Sie den Verbindungstyp.

    In den meisten Szenarien können Sie Standard verwenden. Einige Szenarien wie das Debuggen von Linux oder einer Containeranwendung erfordern einen anderen Verbindungstyp. Weitere Informationen finden Sie in den anderen Abschnitten dieses Artikels oder unter Allgemeine Debugszenarien.

  3. Wählen Sie im Feld Verbindungsziel den Remotecomputer mit einer der folgenden Methoden aus:

    • Wählen Sie den Dropdownlistenpfeil neben Verbindungsziel und dann den Computernamen aus der Dropdownliste aus.

    • Geben Sie den Computernamen in das Feld Verbindungsziel ein, und drücken Sie die EINGABETASTE.

      Vergewissern Sie sich, dass Visual Studio den erforderlichen Port dem Computernamen hinzufügt, der im folgenden Format angezeigt wird: <Remotecomputername>:Port

      Hinweis

      Wenn Sie keine Verbindung über den Namen des Remotecomputers herstellen können, versuchen Sie es mit der IP- und Portadresse (z. B. 123.45.678.9:4022). 4026 ist der Standardport für den Remotedebugger von Visual Studio 2022. Weitere Informationen zu anderen Portzuweisungen des Remotedebuggers finden Sie unter Remotedebugger – Portzuweisungen.

      Hinweis

      Wenn Sie keine Verbindung über den Namen des Remotecomputers herstellen können, versuchen Sie es mit der IP- und Portadresse (z. B. 123.45.678.9:4022). 4024 ist der Standardport für den Remotedebugger von Visual Studio 2019. Weitere Informationen zu anderen Portzuweisungen des Remotedebuggers finden Sie unter Remotedebugger – Portzuweisungen.

    • Wählen Sie die Schaltfläche Suchen neben dem Feld Verbindungsziel aus, um das Dialogfeld Remoteverbindungen zu öffnen. Das Dialogfeld Remoteverbindungen listet alle Geräte auf, die sich in Ihrem lokalen Subnetz befinden oder direkt an Ihren Computer angefügt sind. Möglicherweise müssen Sie auf dem Server den UDP-Port 3702 öffnen, um Remotegeräte zu erkennen. Wählen Sie den gewünschten Computer bzw. das gewünschte Gerät aus, und klicken Sie dann auf Auswählen.

    Hinweis

    Die Einstellung Verbindungstyp bleibt zwischen den Debugsitzungen bestehen. Die Einstellung Verbindungsziel bleibt zwischen Debugsitzungen nur dann bestehen, wenn eine erfolgreiche Debugverbindung mit diesem Ziel hergestellt wurde.

  4. Klicken Sie auf Aktualisieren, um die Liste Verfügbare Prozesse zu füllen.

    Tipp

    Prozesse können im Hintergrund gestartet und beendet werden, während das Dialogfeld An den Prozess anhängen geöffnet ist, sodass die Liste der aktiven Prozesse möglicherweise nicht immer aktuell ist. Sie können jederzeit Aktualisieren auswählen, um die aktuelle Liste anzuzeigen.

  5. Suchen und wählen Sie in der Liste Verfügbare Prozesse den Prozess oder die Prozesse aus, die Sie anhängen möchten.

  6. Stellen Sie sicher, dass im Feld Anfügen an der Typ des zu debuggenden Codes aufgeführt ist. Die Standardeinstellung Automatisch funktioniert für die meisten App-Typen.

    Wenn Sie den Verbindungstyp Standard verwenden, können Sie den Typ des Codes, den Sie anfügen möchten, manuell auswählen. Andernfalls ist die Option Auswählen möglicherweise deaktiviert.

    So wählen Sie Codetypen manuell aus

    1. Klicken Sie auf Auswählen.
    2. Wählen Sie im Dialogfeld Codetyp auswählen die Option Diese Codetypen debuggen aus. Wenn beim Versuch, einen Prozess in der Liste anzufügen, ein Fehler auftritt, können Sie das Dialogfeld Codetyp auswählen verwenden, um die Problembehandlung zu erleichtern.
    3. Klicken Sie auf OK.
  7. Wählen Sie Anfügen aus.

Hinweis

Sie können zum Debuggen an mehrere Apps angefügt werden, aber jeweils nur eine App ist im Debugger aktiv. Sie können die aktive App auf der Visual Studio-Symbolleiste Debugspeicherort oder im Fenster Prozesse festlegen.

In einigen Fällen werden beim Debuggen in einer Remotedesktopsitzung (Terminaldienste) in der Liste Verfügbare Prozesse nicht alle verfügbaren Prozesse angezeigt. Wenn Sie Visual Studio als Benutzer mit einem eingeschränkten Benutzerkonto ausführen, werden in der Liste Verfügbare Prozesse keine Prozesse angezeigt, die in Sitzung 0 ausgeführt werden. Sitzung 0 wird für Dienste und andere Serverprozesse verwendet, einschließlich w3wp.exe. Sie können dieses Problem beheben, indem Sie Visual Studio unter einem Administratorkonto oder an der Serverkonsole anstelle in einer Terminaldienstesitzung ausführen.

Wenn keine dieser beiden Problemlösungen möglich ist, können Sie als dritte Möglichkeit den Prozess anfügen, indem Sie vsjitdebugger.exe -p <ProcessId> in der Windows-Befehlszeile ausführen. Die Prozess-ID kann mit tlist.exe ermittelt werden. Laden Sie die Debugtools für Windows unter WDK and WinDbg downloads (Herunterladen von WDK und WinDbg) herunter, um tlist.exe abzurufen.

Anfügen an einen .NET Core-Prozess, der in Azure App Service ausgeführt wird (Windows)

Wenn Sie Azure App Service (Windows) veröffentlichen, finden Sie Remotedebuggen von ASP.NET Core in Azure oder Debuggen Azure-App Services für Anweisungen.

Anfügen an einen .NET Core-Prozess, der in Azure App Service ausgeführt wird (Windows)

Wenn Sie in Azure App Service (Windows) veröffentlichen, finden Sie die Option Debugger anfügen im Menü ... unter Hosting im Veröffentlichungsprofil. Visual Studio versucht, den Remotedebugger an die Instanz von Azure App Service (Windows) anzufügen, in der das Profil die Veröffentlichung durchführt.

Screenshot der Option

Anfügen an einen .NET Core-Prozess unter Linux mit SSH

Weitere Informationen finden Sie unter Remotedebuggen von .NET Core unter Linux mit SSH.

Anfügen an einen in einem Docker-Container ausgeführten Prozess

Ab Visual Studio 2019 können Sie den Visual Studio-Debugger an einen Prozess anfügen, der in einem Docker-Container ausgeführt wird. Weitere Informationen zum Linux-Docker-Container in .NET Core finden Sie unter Anfügen an einen Prozess, der in einem Linux-Docker-Container ausgeführt wird. Weitere Informationen zum Windows-Docker-Container finden Sie unter Anfügen an einen Prozess, der in einem Windows-Docker-Container ausgeführt wird.

Erneutes Anfügen an einen Prozess

Mit Debuggen>Erneut an den Prozess anhängen (UMSCHALT+ALT+P) können Sie schnell erneut an Prozesse anhängen, an die Sie zuvor angefügt haben. Wenn Sie diesen Befehl auswählen, versucht der Debugger sofort, an die letzten Prozesse, an die Sie angehängt haben, anzuhängen, indem er zuerst versucht, die vorherige Prozess-ID und, falls das nicht erfolgreich ist, den vorherigen Prozessnamen abzugleichen. Wenn keine Übereinstimmungen gefunden werden oder wenn mehrere Prozesse denselben Namen aufweisen, wird das Dialogfeld An den Prozess anhängen geöffnet, damit Sie den richtigen Prozess auswählen können.

Hinweis

Der Befehl Erneut an den Prozess anhängen ist ab Visual Studio 2017 verfügbar.

Allgemeine Debugszenarien

Um Ihnen bei der Entscheidung zu helfen, ob Sie An den Prozess anhängen verwenden und an welchen Prozess Sie anhängen sollen, zeigt die folgende Tabelle einige gängige Debugszenarien mit Links zu weiteren Anweisungen, sofern verfügbar. (Die Liste ist nicht vollständig.)

Bei einigen Anwendungstypen, z. B. UWP-Apps (Universelle Windows Plattform), hängen Sie nicht direkt an einen Prozessnamen an, sondern verwenden stattdessen die Menüoption Installiertes App-Paket debuggen in Visual Studio (siehe Tabelle).

Damit der Debugger an C++-Code angefügt werden kann, muss der Code DebuggableAttributeausgeben. Sie können dieses Attribut automatisch in den Code einfügen, indem Sie eine Verknüpfung über die /ASSEMBLYDEBUG -Linkeroption herstellen.

Für clientseitiges Skriptdebugging muss das Skriptdebuggen im Browser aktiviert sein. Zum Debuggen von clientseitigem Skript in Chrome wählen Sie JavaScript oder TypeScript als Codetyp aus, und je nach App-Typ müssen Sie möglicherweise alle Chrome-Instanzen schließen und den Browser im Debugmodus starten (geben Sie chrome.exe --remote-debugging-port=9222 von einer Befehlszeile aus ein).

Für clientseitiges Skriptdebugging muss das Skriptdebuggen im Browser aktiviert sein. Zum Debuggen von clientseitigem Skript in Chrome wählen Sie JavaScript (Chrome) oder JavaScript (Microsoft Edge – Chromium) als Codetyp aus, und je nach App-Typ müssen Sie möglicherweise alle Chrome-Instanzen schließen und den Browser im Debugmodus starten (geben Sie chrome.exe --remote-debugging-port=9222 von einer Befehlszeile aus ein). In früheren Versionen von Visual Studio war der Skriptdebugger für Chrome das Webkit.

Um schnell einen aktiven Prozess zum Anhängen auszuwählen, geben Sie in Visual Studio STRG+ALT+P und dann den ersten Buchstaben des Prozessnamens ein.

Szenario Debugmethode Prozessname Hinweise und Links
ASP.NET Core: Remotedebuggen auf dem IIS-Server Verwenden von Remotetools und An den Prozess anhängen w3wp.exe oder dotnet.exe Ab .NET Core 3 wird der Prozess w3wp.exe für das standardmäßige In-App-Hostingmodell verwendet. Informationen zur Bereitstellung von Apps finden Sie unter Veröffentlichen in IIS. Ausführlichere Informationen finden Sie unter Remotedebuggen von ASP.NET Core auf einem IIS-Remotecomputer
ASP.NET Core: Debuggen auf dem lokalen Computer nach dem Starten der App ohne den Debugger Verwenden von An den Prozess anhängen msedge.exe Dies kann hilfreich sein, damit Ihre App schneller geladen wird, z. B. bei der Profilerstellung.
ASP.NET 4 oder 4.5: Remotedebuggen auf einem IIS-Server Verwenden von Remotetools und An den Prozess anhängen w3wp.exe Weitere Informationen finden Sie unter Remotedebuggen von ASP.NET auf einem IIS-Remotecomputer
Clientseitiges Skript: Debuggen auf einem lokalen IIS-Server für unterstützte App-Typen Verwenden von An den Prozess anhängen chrome.exe oder msedge.exe Skriptdebugging muss aktiviert sein. Für Chrome müssen Sie Chrome auch im Debugmodus ausführen (geben Sie chrome.exe --remote-debugging-port=9222 von der Befehlszeile aus ein) und JavaScript oder TypeScript im Feld Anfügen auswählen.
C#-, Visual Basic- oder C++-App: Debuggen auf dem lokalen Computer Verwenden Sie entweder das Standarddebuggen (F5) oder An den Prozess anhängen. <appname>.exe Verwenden Sie in den meisten Szenarien das Standarddebuggen und nicht An den Prozess anhängen.
Windows-Desktop-App: Remotedebuggen Remotetools Nicht zutreffend Weitere Informationen finden Sie unter Remotedebuggen einer C#- oder Visual Basic-App oder Remotedebuggen einer C++-App.
.NET Core unter Linux: Debuggen Verwenden von An den Prozess anhängen dotnet.exe oder ein eindeutiger Prozessname Weitere Informationen zur Verwendung von SSH finden Sie unter Remotedebuggen von .NET Core unter Linux mit SSH. Weitere Informationen zu containerisierten Apps finden Sie unter Anfügen an einen in einem Docker-Container ausgeführten Prozess.
Containerisierte App: Debuggen Verwenden von An den Prozess anhängen dotnet.exe oder ein eindeutiger Prozessname Weitere Informationen finden Sie unter Anfügen an einen in einem Docker-Container ausgeführten Prozess.
Python unter Linux: Remotedebuggen Verwenden von An den Prozess anhängen debugpy Weitere Informationen finden Sie unter Remoteanfügen über Python Tools.
Andere unterstützte App-Typen: Debuggen in einem Serverprozess Wenn es sich um einen Remoteserver handelt, verwenden Sie Remotetools und An den Prozess anhängen. chrome.exe, msedge.exe oder andere Prozesse Verwenden Sie bei Bedarf den Ressourcenmonitor, um den Prozess zu identifizieren. Weitere Informationen finden Sie unter Remote debugging (Remotedebuggen).
UWP- (Universelle Windows-App), OneCore-, HoloLens- oder IoT-App: Remotedebuggen Installiertes App-Paket debuggen Nicht zutreffend Weitere Informationen finden Sie unter Debuggen eines installierten App-Pakets, anstatt An den Prozess anhängen zu verwenden.
UWP- (Universelle Windows-App), OneCore-, HoloLens- oder IoT-App: Debuggen einer App, die nicht in Visual Studio gestartet wurde Installiertes App-Paket debuggen Nicht zutreffend Weitere Informationen finden Sie unter Debuggen eines installierten App-Pakets, anstatt An den Prozess anhängen zu verwenden.

Verwenden von Debuggerfeatures

Um die vollständigen Features des Visual Studio-Debuggers (wie das Erreichen von Haltepunkten) beim Anfügen an einen Prozess nutzen zu können, muss die App exakt mit Ihrer lokalen Quelle und den Symbolen übereinstimmen. Das bedeutet, dass der Debugger in der Lage sein muss, die richtigen PDB-Symboldateien zu laden. Standardmäßig ist hierfür ein Debugbuild erforderlich.

Für Remotedebuggingszenarien müssen Sie den Quellcode (oder eine Kopie des Quellcodes) bereits in Visual Studio geöffnet haben. Die kompilierten Binärdateien der App auf dem Remotecomputer müssen vom gleichen Build wie auf dem lokalen Computer stammen.

In einigen lokalen Debugszenarien können Sie in Visual Studio ohne Zugriff auf die Quelle debuggen, wenn die richtigen Symboldateien für die App vorhanden sind. Standardmäßig ist hierfür ein Debugbuild erforderlich. Weitere Informationen finden Sie unter Angeben von Symbol- und Quelldateien.

Beheben von Fehlern beim Anfügen

In einigen Szenarien kann der Debugger Hilfe benötigen, um den Typ des zu debuggenden Codes ordnungsgemäß zu bestimmen. Wenn die Verbindungswerte zwar richtig festgelegt sind (Sie können den ordnungsgemäßen Prozess in der Liste Verfügbare Prozesse einsehen), der Debugger aber nicht angefügt werden kann, versuchen Sie, in der Liste Verbindungstyp den geeignetsten Verbindungstyp auszuwählen. Dies kann beispielsweise erforderlich sein, wenn Sie eine Linux- oder Python-App debuggen. Bei Verwendung des Verbindungstyps „Standard“ können Sie alternativ den spezifischen Typ des Codes auswählen, mit dem eine Verbindung hergestellt werden soll, wie weiter unten in diesem Abschnitt beschrieben.

Wenn der Debugger an einen laufenden Prozess angehängt wird, kann dieser Prozess mehrere Codetypen enthalten. Die Codetypen, an die der Debugger angefügt werden kann, werden im Dialogfeld Codetyp auswählen angezeigt und ausgewählt.

Manchmal kann der Debugger erfolgreich an den einen Codetyp, nicht aber an den anderen Codetyp angehängt werden. Dies tritt normalerweise in den folgenden Fällen auf:

  • Sie versuchen das Anfügen an einen Prozess, der auf einem Remotecomputer läuft. Auf dem Remotecomputer sind möglicherweise nur Remotedebugkomponenten für bestimmte Codetypen installiert.
  • Sie versuchen, den Debugger zum direkten Datenbankdebuggen an mehr als einen Prozess anzufügen. SQL-Debuggen unterstützt lediglich das Anfügen an einen einzelnen Prozess.

Wenn der Debugger nur an bestimmte, nicht aber an alle Codetypen angefügt werden kann, wird eine Meldung mit den Typen angezeigt, die nicht angefügt werden konnten.

Wenn der Debugger erfolgreich an mindestens einen Codetyp angehängt werden kann, können Sie mit dem Debuggen des Prozesses fortfahren. Sie können nur die erfolgreich angehängten Codetypen debuggen. Der nicht angefügte Code im Prozess wird zwar weiterhin ausgeführt, doch Sie wären nicht in der Lage, Haltepunkte festzulegen, Daten anzuzeigen oder andere Debugoperationen für diesen Code durchzuführen.

Um weitere Informationen darüber zu erhalten, warum der Debugger nicht an einen Codetyp angefügt werden konnte, versuchen Sie erneut, den Debugger nur an diesen Codetyp anzufügen.

So erhalten Sie Informationen darüber, warum ein bestimmter Codetyp nicht angehängt werden konnte:

  1. Trennen Sie den Prozess. Wählen Sie im Menü Debuggen die Option Alle trennen aus.

  2. Fügen Sie erneut an den Prozess an, wobei Sie nur den Codetyp auswählen, der nicht angefügt werden konnte.

    1. Wählen Sie im Dialogfeld An den Prozess anhängen in der Liste Verfügbare Prozesse den entsprechenden Prozess aus.

    2. Wählen Sie Auswählen.

    3. Klicken Sie im Dialogfeld Codetyp auswählen auf Diese Codetypen debuggen , und wählen Sie anschließend den Codetyp aus, der nicht angefügt werden konnte. Deaktivieren Sie die anderen Codetypen.

    4. Klicken Sie auf OK.

    5. Wählen Sie im Dialogfeld An den Prozess anhängen die Option Anfügen aus.

    Dieses Mal schlägt das Anfügen komplett fehl, und Sie erhalten eine spezifische Fehlermeldung.