Debuggen von Multithreadanwendungen

Aktualisiert: November 2007

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 2008 bietet ein optimiertes Threadfenster und weitere Verbesserungen der Benutzeroberfläche, die das Multithreaddebuggen erleichtern. Um mehr über die neuen Threadingfeatures der Benutzeroberfläche zu erfahren, arbeiten Sie am besten die exemplarische Vorgehensweise durch. Siehe Exemplarische Vorgehensweise: Debuggen einer Multithreadanwendung.

Visual Studio stellt auch leistungsstarke Haltepunkte und Ablaufverfolgungspunkte bereit, die beim Debuggen von Multithreadanwendungen sehr hilfreich sein können. 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