Dela via


Använda aktivitetsfönstret (C#, Visual Basic)

Fönstret Uppgifter liknar fönstret Trådar, förutom att det visar information om asynkrona uppgifter som skapats med hjälp av mönstret async/await, även kallat det aktivitetsbaserade asynkrona mönstret (TAP) i stället för trådbaserad information. Precis som trådar representerar uppgifter asynkrona åtgärder som kan köras samtidigt. Flera uppgifter kan dock köras i samma tråd.

I .NET-kod kan du använda fönstret Uppgifter när du arbetar med appar med mönstret async/await (Await och Async i VisualBasic). Vyn Uppgifter i fönstret Parallella staplar är dock ofta mer användbar för felsökning av asynkrona program. Mer information finns i Felsöka ett asynkront program.

I .NET-kod kan du använda fönstret Uppgifter när du arbetar med appar med mönstret async/await (Await och Async i VisualBasic). Vyn Uppgifter i fönstret Parallella staplar är dock ofta mer användbar för felsökning av asynkrona program. För mer information, se Visa trådar och aktiviteter i fönstret Parallella staplar.

Tips/Råd

För C/C++-kod använder du vyn Trådar i fönstret Parallella staplar när du behöver felsöka aktivitetsgrupper, parallella algoritmer, asynkrona agenter och enkla uppgifter. För mer information, se Visa trådar och aktiviteter i fönstret Parallella staplar.

Du kan använda fönstret Uppgifter när du bryter dig in i felsökningsprogrammet. Du kan komma åt den på Debug-menyn genom att klicka på Windows och sedan på Aktiviteter. Följande bild visar fönstret Uppgifter i standardläge.

Aktivitetsfönster

Aktivitetsfönster

Anmärkning

I hanterad kod kanske en Task som har statusen TaskStatus.Created, TaskStatus.WaitingForActivation eller TaskStatus.WaitingToRun kanske inte visas i fönstret Uppgifter när hanterade trådar är i viloläge eller kopplingstillstånd.

Information om aktiviteterskolumn

Kolumnerna i fönstret Uppgifter visar följande information.

Kolumnnamn Beskrivning
Flaggor Visar vilka aktiviteter som flaggas och låter dig flagga eller ta bort en uppgift.
ikoner Gul pil En gul pil visar den aktuella uppgiften. Den nuvarande uppgiften är den översta uppgiften i den aktuella tråden.

Grön pil En grön pil anger den aktuella felsökningskontexten (efter en växling till uppgift i felsökningsprogrammet).

Vit pil En vit pil indikerar den brytande uppgiften, dvs. den som var aktuell när debuggern anropades.

Pausa ikon Pausikonen anger en uppgift som har låsts av användaren. Du kan låsa och frigöra en uppgift genom att högerklicka på den i listan.
ID Ett systemgenererat nummer för uppgiften. I intern kod är det här aktivitetens adress.
Status Det aktuella tillståndet (schemalagt, aktivt, blockerat, låst, väntar eller slutfört) för uppgiften.

Status: Schemalagd Schemalagd. En schemalagd aktivitet är en aktivitet som ännu inte har körts och därför ännu inte har någon anropsstack, tilldelad tråd eller relaterad information.

Status aktiv Aktiv. En aktiv uppgift är en uppgift som körde kod innan ett avbrott i felsökningsprogrammet.

Status blockerad Blockerad. En blockerad uppgift är en uppgift som blockeras eftersom den väntar på att en händelse ska signaleras, ett lås som ska släppas eller en annan uppgift som ska slutföras.

Status väntar Väntar. En icke-blockerande väntande uppgift som använder mönstret async/await.

Statusen har låsts Låst. Deadlock-symbolen refererar till en väntande uppgift vars associerade tråd är låst med en annan tråd.

Hovra över statuscellen för att se mer information om blocket. Varning: Fönstret Uppgifter rapporterar endast dödläge för en blockerad uppgift som använder en synkroniseringsprimär som stöds av Wait Chain Traversal (WCT). Till exempel, för ett objekt i dödläge Task, som använder WCT, rapporterar felsökningsprogrammet Väntar i dödläge. För en låst uppgift som hanteras av Concurrency Runtime, som inte använder WCT, rapporterar felsökningsprogrammet Väntar. Mer information om WCT finns i Genomgång av väntekedja.
Starttid Den tid då uppgiften blev aktiv.
Varaktighet Antalet sekunder som aktiviteten har varit aktiv.
Slutförandetid Tidpunkt då aktiviteten slutfördes.
Läge Den aktuella platsen i aktivitetens anropsstack. För muspekaren över den här cellen för att se hela anropsstacken för uppgiften. Schemalagda aktiviteter har inget värde i den här kolumnen.
Uppgift Den första metoden och eventuella argument som skickades till aktiviteten när den skapades.
AsyncState För hanterad kod, aktivitetsstatus. Som standard är den här kolumnen dold. Om du vill visa den här kolumnen öppnar du snabbmenyn för en av kolumnrubrikerna. Välj Kolumner, AsyncState.
Förälder ID för uppgiften som skapade den här uppgiften. Om det här är tomt har aktiviteten ingen överordnad uppgift. Detta gäller endast för hanterade program.
Trådtilldelning ID:t och namnet på den tråd som aktiviteten körs på.
AppDomain För hanterad kod, programdomänen där uppgiften körs.
task_group För intern kod är adressen till det task_group objekt som schemalagt uppgiften. För asynkrona agenter och lätta uppgifter är den här kolumnen inställd på 0.
Bearbeta ID:t för den process som aktiviteten körs på.

Du kan lägga till kolumner i vyn genom att högerklicka på en kolumnrubrik och sedan välja de kolumner du vill använda. (Ta bort kolumner genom att rensa markeringen.) Du kan också ordna om kolumner genom att dra dem åt vänster eller höger. Snabbmenyn för kolumner visas i följande bild.

Snabbvisningsmenyn i fönstret Uppgifter

Snabbvisningsmenyn i fönstret Uppgifter

Sorteringsuppgifter

Om du vill sortera aktiviteter efter kolumnvillkor klickar du på kolumnrubriken. Genom att till exempel klicka på kolumnrubriken ID kan du sortera aktiviteterna efter aktivitets-ID: 1,2,3,4,5 och så vidare. Om du vill ändra sorteringsordningen klickar du på kolumnrubriken igen. Den aktuella sorteringskolumnen och sorteringsordningen indikeras med en pil på kolumnen.

Grupperingsuppgifter

Du kan gruppera aktiviteter baserat på valfri kolumn i listvyn. Genom att till exempel högerklicka på kolumnrubriken Status och sedan klicka på Gruppera>efter[status], kan du gruppera alla aktiviteter som har samma status. Du kan till exempel snabbt se väntande uppgifter så att du kan fokusera på varför de blockeras. Du kan också komprimera en grupp som inte är av intresse under felsökningssessionen. På samma sätt kan du gruppera efter de andra kolumnerna. En grupp kan (av)flaggas bara genom att klicka på knappen bredvid grupprubriken. Följande bild visar fönstret Uppgifter i grupperat läge.

Grupperat läge i uppgiftsfönstret

Grupperat läge i uppgiftsfönstret

Föräldra- och barnvy

(Den här vyn är endast tillgänglig för hanterad kod.) Genom att högerklicka på kolumnrubriken Status och sedan klicka på Gruppera> efteröverordnad kan du ändra listan över aktiviteter till en hierarkisk vy, där varje underordnad uppgift är en undernod som kan visas eller döljas under dess överordnade.

Markera uppgifter

Du kan flagga tråden för den uppgift som en uppgift körs på genom att välja uppgiftsobjektet och sedan välja Flagga tilldelad tråd på kontextmenyn, eller genom att klicka på flaggikonen i den första kolumnen. Om du flaggar flera aktiviteter kan du sedan sortera på flaggkolumnen så att alla flaggade aktiviteter hamnar överst så att du bara kan fokusera på dem. Du kan också använda fönstret Parallella staplar för att endast visa flaggade uppgifter. På så sätt kan du filtrera bort uppgifter som du inte är intresserad av för felsökning. Flaggor sparas inte mellan felsökningssessioner.

Frysnings- och upptiningsuppgifter

Du kan låsa tråden där en aktivitet körs genom att högerklicka på uppgiftslistobjektet och sedan klicka på Lås tilldelad tråd. (Om en uppgift redan är låst är kommandot Thaw Assigned Thread.) När du låser en tråd körs inte den tråden när du går igenom kod efter den aktuella brytpunkten. Kommandot Freeze All Threads But This One (Lås alla trådar men den här ) låser alla trådar utom den som kör uppgiftslistobjektet.

Följande bild visar de andra menyalternativen för varje uppgift.

Snabbtrådsmeny i aktivitetsfönstret

Snabbtrådsmeny i aktivitetsfönstret

Växla aktiv uppgift eller fönster

Kommandot Växla till uppgift gör den aktuella aktiviteten till den aktiva aktiviteten. Kommandot Växla till ram gör den markerade stackramen till den aktiva stackramen. Felsökningskontexten växlar till den aktuella aktiviteten eller den valda stackramen.