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.
Du kan felsöka C++-kod som körs på grafikprocessorn (GPU). Stöd för GPU-felsökning i Visual Studio omfattar rasidentifiering, startprocesser och anslutning till dem samt integrering i felsökningsfönstren.
Plattformar som stöds
Felsökning stöds i Windows 7, Windows 8, Windows 10, Windows 11, Windows Server 2008 R2, Windows Server 2012 och Windows Server 2016. För felsökning på programvaruemulatorn, Windows 8, Windows 10, Windows 11 eller Windows Server 2012 krävs Windows Server 2016. För felsökning på maskinvaran måste du installera drivrutinerna för grafikkortet. Alla maskinvaruleverantörer implementerar inte alla felsökningsfunktioner. Se leverantörsdokumentationen för begränsningar.
Anmärkning
Oberoende maskinvaruleverantörer som vill stödja GPU-felsökning i Visual Studio måste skapa en DLL som implementerar VSD3DDebug-gränssnittet och riktar in sig på sina egna drivrutiner.
Konfigurera GPU-felsökning
Felsökaren kan inte bryta på både CPU-kod och GPU-kod i samma appkörning. Som standard bryts felsökningsprogrammet i CPU-koden. Använd något av följande två steg för att felsöka GPU-kod:
I listan Felsökningstyp i verktygsfältet Standard väljer du Endast GPU.
I Solution Explorer går du till snabbmenyn för projektet och väljer Egenskaper. I dialogrutan Egenskapssidor väljer du Felsökning och väljer sedan Endast GPU i listan Felsökningstyp .
Starta och ansluta till program
Du kan använda Visual Studio-felsökningskommandon för att starta och stoppa GPU-felsökning. Mer information finns i Navigera genom kod med felsökningsprogrammet. Du kan också koppla GPU-felsökaren till en process som körs, men bara om den processen kör GPU-kod. Mer information finns i Koppla till processer som körs.
Kör aktuell ruta till markör och kör till markör
När du felsöker GPU:n har du två alternativ för att köra till markörens plats. Kommandona för båda alternativen finns på snabbmenyn i kodredigeraren.
Kommandot Kör till markör kör appen tills den når markörens plats och sedan bryts. Detta innebär inte att den aktuella tråden körs till markören; snarare innebär det att den första tråden som når markörens punkt utlöser ett stopp. Se Navigera genom kod med felsökningsprogrammet
Kommandot Kör aktuell panel till markör kör appen tills alla trådar i den aktuella panelen når markören och sedan bryts.
Felsöka Windows
Genom att använda vissa felsökningsfönster kan du undersöka, flagga och låsa GPU-trådar. Mer information finns i:
Undantag för datasynkronisering
Debuggaren kan identifiera flera datasynkroniseringsförhållanden under exekvering. När ett villkor identifieras går felsökningsprogrammet in i bryttillståndet. Du har två alternativ – Bryt eller Fortsätt. Med hjälp av dialogrutan Undantag kan du konfigurera om felsökaren identifierar dessa villkor och vilka villkor det kommer att brytas för. Mer information finns i Hantera undantag med felsökningsprogrammet. Du kan också använda dialogrutan Alternativ för att ange att felsökaren ska ignorera undantag om de data som skrivs inte ändrar datavärdet. Mer information finns i dialogrutan Allmänt, Felsökning, Alternativ.
Felsökning
Att specificera en accelerator
Brytpunkter i GPU-kod träffas endast när koden körs på acceleratorn::direct3d_ref (REF). Om du inte anger någon accelerator i koden väljs REF-acceleratorn automatiskt som felsökningsacceleratortyp i projektegenskaperna. Om koden uttryckligen väljer en accelerator används inte REF-acceleratorn under felsökningen och brytpunkterna kommer inte att slås om inte GPU-maskinvaran har felsökningsstöd. Du kan åtgärda detta genom att skriva koden så att den använder REF-acceleratorn under felsökningen. Mer information finns i projektegenskaper och Använda accelerator och accelerator_view objekt och projektinställningar för en C++-felsökningskonfiguration.
Villkorsstyrda brytpunkter
Villkorsstyrda brytpunkter i GPU-kod stöds, men inte alla uttryck kan utvärderas på enheten. När ett uttryck inte kan utvärderas på enheten utvärderas det på felsökningsprogrammet. Felsökningsprogrammet kommer sannolikt att köras långsammare än enheten.
Fel: Det finns ett konfigurationsproblem med den valda felsökningsacceleratortypen.
Det här felet inträffar när det finns en inkonsekvens mellan projektinställningarna och konfigurationen av den dator som du felsöker på. Mer information finns i Projektinställningar för en C++-felsökningskonfiguration.
Fel: Felsökningsdrivrutinen för den valda felsökningsacceleratortypen är inte installerad på måldatorn.
Det här felet inträffar om du felsöker på en fjärrdator. Felsökaren kan inte avgöra förrän körningstiden om drivrutinerna är installerade på fjärrdatorn. Drivrutinerna är tillgängliga från tillverkaren av grafikkortet.
Fel: Timeout-detektering och återställning (TDR) måste inaktiveras på fjärrplatsen.
Det är möjligt att C++ AMP-beräkningar överskrider det standardtidsintervall som anges av TDR (TimeOut Detection and Recovery Process) för Windows. När det händer avbryts beräkningen och data går förlorade. Mer information finns i Hantera TDR i C++ AMP.