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
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.Verwenden des Fensters "Parallele Aufgaben"
Zeigt eine Liste aller verwalteten oder systemeigenen Aufgabenobjekte einschließlich ihres Status und anderer nützlicher Informationen an.Verwenden des Fensters "Parallele Stapel"
Zeigt Aufruflisten von mehreren Threads (oder Aufgaben) in einer einzelnen Ansicht an. Außerdem werden Stapelsegmente verbunden, die in allen Threads (oder Aufgaben) verwendet werden.Exemplarische Vorgehensweise: Debuggen einer parallelen Anwendung
Exemplarische Vorgehensweise, in der erläutert wird, wie die Fenster Parallele Aufgaben und Parallele Stapel verwendet werden.Gewusst wie: Verwenden des parallelen Überwachungsfensters
Überprüfen Sie Werte und Ausdrücke über mehrere Threads.Gewusst wie: Verwenden des Fensters "GPU-Threads"
Überprüfen und arbeiten Sie mit Threads, die auf der GPU während des Debuggings ausgeführt werden.
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-Unterstützung für ältere Code (Visual C++)
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.