Debuggen von Multithreadanwendungen

Ein Thread ist eine Folge von Anweisungen, für die das Betriebssystem Prozessorzeit reserviert.Jeder Prozess, der im Betriebssystem ausgeführt wird, umfasst mindestens einen Thread.Prozesse, die über mehr als einen Thread verfügen, werden als Multithreadprozesse bezeichnet.

Auf Computern mit mehreren Prozessoren, Mehrkernprozessoren oder Hyperthreadingprozessen können mehrere Threads gleichzeitig ausgeführt werden.Die parallele Verarbeitung mehrerer Threads kann sich äußerst positiv auf die Programmleistung auswirken, andererseits aber auch das Debuggen erschweren, da in diesem Fall mehrere Threads verfolgt werden müssen.

Außerdem werden durch das Multithreading neue potenzielle Fehlertypen eingeführt.Beispielsweise müssen zwei oder mehr Threads häufig auf dieselbe Ressource zugreifen, während jeweils nur ein Thread sicher auf die Ressource zugreifen kann.Um sicherzustellen, dass immer nur ein Thread auf die Ressource zugreifen kann, ist eine Form des gegenseitigen Ausschlusses erforderlich.Wenn der gegenseitige Ausschluss nicht richtig durchgesetzt wird, kann eine Deadlock--Bedingung entstehen, unter der kein Thread ausgeführt werden kann.Deadlocks können beim Debuggen ein besonders schwerwiegendes Problem verursachen.

Visual Studio 2012 bietet ein optimiertes Threads Fenster, das neue GPU-Thread neue parallele das Fenster Überwachen und weitere Verbesserungen der Benutzeroberfläche, um mehrfädiges Debuggen zu vereinfachen. Die beste Möglichkeit Schnittstellen über die neuen Funktionen zum Threading, indem Sie die exemplarischen Vorgehensweisen dient.Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Debuggen einer Multithreadanwendung und Exemplarische Vorgehensweise: Debuggen einer C++ AMP-Anwendung.

Visual Studio stellt auch leistungsstarke Haltepunkte und Ablaufverfolgungspunkte, die sehr hilfreich sein können, wenn Sie Debuggen von Multithreadanwendungen.Um Haltepunkte in einzelnen Threads zu platzieren, können Sie Haltepunktfilter verwenden.Siehe Gewusst wie: Angeben eines Haltepunktfilters.

Das Debuggen einer Multithreadanwendung mit einer Benutzeroberfläche kann besonders schwierig sein.In diesem Fall könnten Sie erwägen, die Anwendung auf einem zweiten Computer auszuführen und das Remotedebuggen zu verwenden.Weitere Informationen finden Sie unter Remotedebuggen – Setup.

In diesem Abschnitt

Verwandte Abschnitte

Siehe auch

Weitere Ressourcen

Arbeiten mit Threads und Prozessen

Remotedebuggen – Setup