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
Gewusst wie: Verwenden des Threadfensters
Nützliche Verfahren zum Debuggen von Threads mit dem Threadfenster.Gewusst wie: Wechseln zu einem anderen Thread während des Debuggings
Drei Möglichkeiten, um mit dem Debugkontext zu einem anderen Thread zu wechseln.Gewusst wie: Kennzeichnen von Threads und Aufheben der Kennzeichnung
Markieren oder Kennzeichnen von Threads, die beim Debuggen besondere Aufmerksamkeit erhalten sollen.Gewusst wie: Festlegen eines Threadnamens in systemeigenem Code
Benennen des Threads mit einem Namen, der im Threadfenster angezeigt wird.Gewusst wie: Festlegen eines Threadnamens in verwaltetem Code
Benennen des Threads mit einem Namen, der im Threadfenster angezeigt wird.Exemplarische Vorgehensweise: Debuggen einer Multithreadanwendung.
Eine Einführung in die Features für das Threaddebuggen, wobei der Schwerpunkt auf den Gewusst wie-Features von Visual Studio 2008 liegt.Gewusst wie: Debuggen eines Hochleistungsclusters
Techniken zum Debuggen einer Anwendung, die auf einem Hochleistungscluster ausgeführt wird.Tipps zum Debuggen von Threads in systemeigenem Code
Einfache Techniken, die beim Debuggen systemeigener Threads hilfreich sein können.
Verwandte Abschnitte
Gewusst wie: Angeben eines Haltepunktfilters
Verwenden von Haltepunktfiltern, wenn ein Haltepunkt in einem einzelnen Thread platziert werden soll.Gewusst wie: Angeben einer Ablaufverfolgungspunkt-/Haltepunktaktion
Ablaufverfolgungspunkte ermöglichen es Ihnen, die Ausführung des Programms ohne Unterbrechung zu verfolgen. Dies kann beim Untersuchen von Problemen wie Deadlocks hilfreich sein.Verwaltetes Threading
Threadingbegriffe in der .NET Framework-Programmierung, einschließlich Beispielcode.Multithreading in Komponenten
Erläutert die Verwendung des Multithreadings in .NET Framework-Komponenten.Multithreading in Visual Basic
Threadingbegriffe und Beispielcode für Visual Basic-Programmierer.Verwenden von Threading (C#-Programmierhandbuch)
Threadingbegriffe und Beispielcode für C#-Programmierer.Multithreading
Threadingbegriffe und Beispielcode für C++-Programmierer, die MFC verwenden.Gewusst wie: Debuggen einer Remoteclusteranwendung
Anweisungen zum Einrichten des Remotedebuggens für eine Anwendung, die auf einem Hochleistungscluster ausgeführt wird.