Wie debuggt man einen einzelnen Thread in Visual Studio?

Wie debuggt man einen einzelnen Thread in Visual Studio?

Folgendes habe ich getan:

  1. Setzen Sie einen bedingten Unterbrechungspunkt, von dem ich wusste, dass er nur auf den Thread trifft, nach dem ich gesucht habe.

  2. Sobald der Haltepunkt erreicht ist und Sie sich im gewünschten Thread befinden, drücken Sie im Visual Studio-Threads-Fenster (beim Debuggen, Debug -> Windows -> Threads) Strg + A (um alle Threads auszuwählen) und dann Strg + Klicken Sie auf den Thread, in dem Sie sich gerade befinden. Sie sollten alle Threads außer demjenigen, den Sie debuggen möchten, ausgewählt haben.

  3. Klicken Sie mit der rechten Maustaste und wählen Sie "Einfrieren".

Jetzt durchläuft Visual Studio nur noch den aufgetauten Thread. Es scheint dabei viel langsamer zu sein, vermutlich weil es alle eingefrorenen Threads durchlaufen muss, aber es hat meinem Multithread-Debugging etwas Vernunft gebracht.


Das Einfrieren/Auftauen von Threads ist ein falscher Weg, da andere Threads keinen Code ausführen.

Der korrekteste und brauchbarste Weg ist:

  1. Drücken Sie Strg+A im Breakpoints-Fenster (wählen Sie alle Breakpoints aus).
  2. Klicken Sie mit der rechten Maustaste und wählen Sie "Filter...".
  3. Geben Sie "ThreadId=(aktuelle Thread-ID)" ein.

In Visual Studio 2015 und neuer, ist der Prozess ähnlich:

  1. Drücken Sie Strg+A im Breakpoints-Fenster (wählen Sie alle Breakpoints aus).
  2. Klicken Sie mit der rechten Maustaste und wählen Sie "Einstellungen...".
  3. Aktivieren Sie "Bedingungen" und wählen Sie im Dropdown-Menü "Filter" aus
  4. Geben Sie "ThreadId=(aktuelle Thread-ID)" ein.

Also werden alle Threads ausgeführt, aber der Debugger trifft nur auf den aktuellen Thread.


Ich habe gerade eine Erweiterung für Visual Studio 2010+ veröffentlicht, die genau das tut, wonach Sie suchen. Und sie ist kostenlos :).

Sehen Sie es sich hier in der Galerie, auf der offiziellen Seite oder im Github-Repository an.