Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En tråd är en sekvens med instruktioner som operativsystemet beviljar processortid. Varje process som körs i operativsystemet består av minst en tråd. Processer som har fler än en tråd kallas multitrådade.
Datorer med flera processorer, processorer med flera kärnor eller hypertrådsprocesser kan köra flera samtidiga trådar. Parallell bearbetning med många trådar kan avsevärt förbättra programmets prestanda, men det kan också göra felsökningen svårare eftersom du spårar många trådar.
Perfekt parallell bearbetning är inte alltid möjligt. Trådar måste ibland synkroniseras. En tråd kan behöva vänta på ett resultat från en annan tråd, eller så kan en tråd behöva exklusiv åtkomst till en resurs som en annan tråd använder. Synkroniseringsproblem är en vanlig orsak till buggar i flertrådade program. Ibland kan trådar vänta på en resurs som aldrig blir tillgänglig. Detta resulterar i ett villkor som kallas deadlock.
Trådar och processer
Trådar och processer är relaterade begrepp inom datavetenskap. Båda representerar sekvenser med instruktioner som måste köras i en viss ordning. Instruktioner i separata trådar eller processer kan dock köras parallellt.
Processer finns i operativsystemet och motsvarar vad användarna ser som program eller program. En tråd finns däremot i en process. Därför kallas trådar ibland för lättviktsprocesser. Varje process består av en eller flera trådar.
Förekomsten av flera processer gör det möjligt för en dator att utföra mer än en uppgift i taget. Förekomsten av flera trådar gör att en process för att separera arbete kan utföras parallellt. På en dator med flera processorer kan processer eller trådar köras på olika processorer. Detta möjliggör verklig parallell bearbetning.
Verktyg för felsökning av flertrådade appar
Visual Studio innehåller olika verktyg för att felsöka appar med flera läsare.
- För trådar är de primära verktygen för felsökning av trådar fönstret Parallella staplar , fönstret Parallell bevakning , trådmarkörer i källfönster, fönstret Trådar och verktygsfältet Felsökningsplats . Mer information om trådvyn i Parallella staplar finns i Felsöka ett dödläge med hjälp av vyn Trådar. Mer information om hur du använder fönstren Parallel Stacks och Parallel Watch finns i Kom igång med att felsöka ett flertrådat program. Kom igång-artikeln visar hur du använder trådmarkörer. Mer information finns i Genomgång: Felsöka ett C++ AMP-program. 
- För .NET-kod som använder asynkronisering är de primära verktygen för felsökning vyn Uppgifter i fönstret Parallella staplar . Information om hur du kommer igång finns i Felsöka ett asynkront program (.NET). 
- För trådar är de primära verktygen för felsökning av trådar fönstret Parallella staplar , fönstret Parallell bevakning , trådmarkörer i källfönster, fönstret Trådar och verktygsfältet Felsökningsplats . Mer information om trådvyn i Parallella staplar finnsi Visa trådar och uppgifter i fönstret Parallella staplar. Mer information om hur du använder fönstren Parallel Stacks och Parallel Watch finns i Kom igång med att felsöka ett flertrådat program. Kom igång-artikeln visar hur du använder trådmarkörer. Mer information finns i Genomgång: Felsöka ett C++ AMP-program. 
- För .NET-kod som använder asynkronisering är de primära verktygen för felsökning vyn Uppgifter i fönstret Parallella staplar . För mer information, se Visa trådar och aktiviteter i fönstret Parallella staplar. 
- För felsökning av trådar på GPU:n är det primära verktyget fönstret GPU-trådar . Se Så här gör du: Använd fönstret GPU-trådar. 
- För processer är de primära verktygen dialogrutan Koppla till process , fönstret Processer och verktygsfältet Felsökningsplats . 
Visual Studio innehåller även kraftfulla brytpunkter och spårningspunkter, vilket kan vara användbart när du felsöker flertrådade program. Använd brytpunktsvillkor och -filter för att placera brytpunkter på enskilda trådar. Med spårningspunkter kan du spåra körningen av ditt program utan att bryta, för att studera problem som t.ex. dödlägen. Mer information finns i Brytpunktsåtgärder och spårningspunkter.
Det kan vara särskilt svårt att felsöka ett flertrådat program som har ett användargränssnitt. Du kan överväga att köra programmet på en andra dator och använda fjärrfelsökning. Mer information finns i Fjärrfelsökning.
I följande tabell visas den tillgängliga informationen och de åtgärder som du kan utföra på var och en av dessa platser:
| Användargränssnitt | Tillgänglig information | Åtgärder som du kan utföra | 
|---|---|---|
| Dialogrutan Bifoga till process | Tillgängliga processer som du kan koppla till: - Processnamn (.exe) – Process-ID-nummer - Menyradsrubrik – Typ (Hanterad v4.0; Hanterad v2.0, v1.1, v1.0; x86; x64; IA64) – Användarnamn (kontonamn) – Sessionsnummer | Välj en process att koppla till Välj en fjärrdator Ändra transporttyp för anslutning till fjärrdatorer | 
| Fönstret Processer | Anslutna processer: – Processnamn – Process-ID-nummer – Sökväg för att bearbeta .exe - Menyradsrubrik - Tillstånd (paus. Körs) – Felsökning (intern, hanterad och så vidare.) – Transporttyp (standard, intern utan autentisering) - Transport Qualifier (fjärrdator) | Arbetsredskap: -Bifoga -Lösgöra -Avsluta Snabbmeny: -Bifoga -Lösgöra – Koppla från när felsökningen stoppades -Avsluta | 
| Verktygsfältet Felsökningsplats | – Aktuell process – Pausa programmet – Återuppta programmet – Pausa och stänga av programmet – Aktuell tråd – Växla aktuellt trådflaggatillstånd – Visa endast flaggade trådar – Visa endast aktuell process – Aktuell stackram | – Växla till en annan process – Pausa, återuppta eller stänga av programmet – Växla till en annan tråd i den aktuella processen – Växla till en annan stackram i den aktuella tråden – Flagga eller ta bort aktuella trådar – Visa endast flaggade trådar – Visa endast den aktuella processen | 
| Fönstret Parallella staplar | – Anropa staplar för flera trådar i ett fönster. – Aktiv stackram för varje tråd. - Uppringare och uppringare för alla metoder. – Identifiering av dödläge | – Filtrera bort angivna trådar – Filtrera bort externa kodstackar – Växla till vyn Uppgifter - Flagga eller ta bort en tråd -Zooma – Kopiera stackramar – Spara/exportera alla staplar som avbildning | 
| Fönstret Parallell bevakning | - Flaggkolumnen, där du kan markera en tråd som du vill ägna särskild uppmärksamhet åt. - Ramkolumnen, där en pil anger den valda ramen. – En konfigurerbar kolumn som kan visa datorn, processen, panelen, uppgiften och tråden. | - Flagga eller ta bort en tråd – Visa endast flaggade trådar – Växla bildrutor – Sortera en kolumn – Gruppera trådar - Frysa eller tina trådar – exportera data i fönstret Parallell bevakning | 
| Fönstret Trådar | Trådar i den aktuella processen: – Tråd-ID – Hanterat ID – Kategori (huvudtråd, gränssnittstråd, fjärrproceduranropshanterare eller arbetstråd) - Trådnamn – Plats där tråden skapas -Prioritering - Tillhörighetsmask - Tillfälligt antal – Processnamn - Flaggindikator - Pausad indikator | Arbetsredskap: -Söka - Sök samtalsstacken - Flagga bara min kod – Flagga val av anpassad modul - Gruppera efter -Kolumner – Visa/dölj anropsstackar – Expandera/dölj grupper - Lås/Tina trådar Snabbmeny: – Visa trådar i källan – Växla till en tråd – Lås en tråd som körs - Tina en frusen tråd – Flagga en tråd för ytterligare studier – Ta bort en tråd – Byt namn på en tråd – Visa och dölja trådar Andra åtgärder: – Visa anropsstacken för en tråd i en DataTip | 
| Källfönster | Trådindikatorer i vänster rännsten anger en eller flera trådar (inaktiverad som standard, aktiverad med hjälp av snabbmenyn i fönstret Trådar ) | Snabbmeny: – Växla till en tråd – Flagga en tråd för ytterligare studier – Ta bort en tråd | 
| Aktivitetsfönster | – Visa information om Task objekt som aktivitets-ID, aktivitetsstatus (schemalagd, körning, väntan, dödläge) och vilken tråd som har tilldelats uppgiften. – Aktuell plats i anropsstacken. – Delegera skickad till uppgiften vid skapandetillfället | – Växla till aktuell aktivitet – Flagga eller ta bort en uppgift – Frysa eller tina en uppgift | 
| Fönstret GPU-trådar | - Flaggkolumnen, där du kan markera en tråd som du vill ägna särskild uppmärksamhet åt. - Den aktuella trådkolumnen, där en gul pil anger den aktuella tråden. - Kolumnen Antal trådar , som visar antalet trådar på samma plats. - Kolumnen Rad , som visar kodraden där varje grupp med trådar finns. - Kolumnen Adress , som visar instruktionsadressen där varje grupp med trådar finns. - Kolumnen Plats , som är platsen i adressens kod. – Kolumnen Status , som visar om tråden är aktiv eller blockerad. - Kolumnen Panel , som visar panelindexet för trådarna på raden. | - Ändra till en annan tråd – Visa en viss panel och tråd – Visa eller dölja en kolumn – Sortera efter en kolumn – Gruppera trådar - Frysa eller tina trådar - Flagga eller ta bort en tråd – Visa endast flaggade trådar |