Megosztás a következőn keresztül:


GPU-kód hibakeresése

Hibakeresést végezhet a grafikus feldolgozó egységen (GPU) futó C++ kódban. A Visual Studio GPU-hibakeresési támogatása magában foglalja a versenyészlelést, a folyamatok elindítását és a hozzájuk való csatolást, valamint a hibakeresési ablakokba való integrációt.

Támogatott platformok

A hibakeresés támogatott Windows 7, Windows 8, Windows 10, Windows 11, Windows Server 2008 R2, Windows Server 2012 és Windows Server 2016 rendszereken. A szoftveremulátor, a Windows 8, a Windows 10, a Windows 11 vagy a Windows Server 2012 hibakereséséhez a Windows Server 2016 szükséges. A hardveren végzett hibakereséshez telepítenie kell a grafikus kártya illesztőprogramjait. Nem minden hardvergyártó implementálja az összes hibakereső funkciót. Korlátozásokért tekintse meg a szállító dokumentációját.

Megjegyzés:

Azoknak a független hardvergyártóknak, akik támogatni szeretnék a GPU-hibakeresést a Visual Studióban, létre kell hozniuk egy DLL-t, amely implementálja a VSD3DDebug felületet, és saját illesztőprogramokat céloz meg.

GPU-hibakeresés konfigurálása

A hibakereső nem tudja megtörni a CPU-kódot és a GPU-kódot azonos alkalmazásvégrehajtás során. Alapértelmezés szerint a hibakereső leáll a CPU-kódon. A GPU-kód hibakereséséhez kövesse az alábbi két lépés egyikét:

  • A Standard eszköztár Hibakeresési típus listájában válassza a CSAK GPU lehetőséget.

  • A Megoldáskezelőben a projekt helyi menüjében válassza a Tulajdonságok lehetőséget. A Tulajdonságlapok párbeszédpanelen válassza a Hibakeresés lehetőséget, majd válassza a GPU Csak a hibakereső típusa listában.

Alkalmazások indítása és csatolása

A Visual Studio hibakeresési parancsaival elindíthatja és leállíthatja a GPU-hibakeresést. További információ: Navigálás a kódon a hibakeresővel. A GPU-hibakeresőt egy futó folyamathoz is csatolhatja, de csak akkor, ha ez a folyamat GPU-kódot hajt végre. További információ: Csatolás futó folyamatokhoz.

Az Aktuális csempe futtatása a kurzorhoz és a Futtatás a kurzorhoz

Amikor a GPU-n végez hibakeresést, két lehetősége van, hogy elérje a kurzor helyét. Mindkét beállítás parancsai a kódszerkesztő helyi menüjében érhetők el.

  1. A Futtatás a kurzorhoz parancs addig futtatja az alkalmazást, amíg el nem éri a kurzor helyét, majd megszakad. Ez nem azt jelenti, hogy az aktuális szál a kurzorhoz fut; ehelyett azt jelenti, hogy a kurzort elérő első szál aktiválja a törést. Lásd: Navigálás a kódon a hibakeresővel

  2. Az Aktuális csempe futtatása a kurzorhoz parancs addig futtatja az alkalmazást, amíg az aktuális csempe összes szála el nem éri a kurzort, majd megszakad.

A Windows hibakeresése

Bizonyos hibakeresési ablakok használatával megvizsgálhatja, megjelölheti és lefagyaszthatja a GPU-szálakat. További információkért lásd:

Adatszinkronizálási kivételek

A hibakereső számos adatszinkronizálási feltételt képes azonosítani a végrehajtás során. Ha egy feltételt észlel, a hibakereső beírja a törésállapotot. Két lehetősége van: Törés vagy Folytatás. A Kivételek párbeszédpanel használatával konfigurálhatja, hogy a hibakereső észleli-e ezeket a feltételeket, és azt is, hogy mely feltételek esetén szakad meg. További információ: Kivételek kezelése a hibakeresővel. A Beállítások párbeszédpanelen azt is megadhatja, hogy a hibakereső figyelmen kívül hagyja a kivételeket, ha a megírt adatok nem módosítják az adatok értékét. További információ: Általános, Hibakeresés, Beállítások párbeszédpanel.

Hibaelhárítás

Gyorsító megadása

A GPU-kód töréspontjai csak akkor aktiválódnak, ha a kód az accelerator::direct3d_ref (REF) gyorsítón fut. Ha nem ad meg gyorsítót a kódban, a REF-gyorsító automatikusan ki lesz jelölve hibakeresési gyorsítótípusként a projekt tulajdonságai között. Ha a kód kifejezetten kiválaszt egy gyorsító egységet, akkor a REF gyorsító nem lesz használatban hibakeresés közben, és a töréspontok nem fognak működni, hacsak a GPU hardver nem támogatja a hibakeresést. Ezt kijavíthatja a kód megírásával, hogy a hibakeresés során a REF-gyorsítót használja. További információkért tekintse meg a projekt tulajdonságait, valamint a Gyorsító és gyorsító_nézet objektumok használata és a C++ hibakeresési konfiguráció projektbeállításai című témaköröket.

Feltételes töréspontok

A GPU-kód feltételes töréspontjai támogatottak, de nem minden kifejezés értékelhető ki az eszközön. Ha egy kifejezés nem értékelhető ki az eszközön, azt a hibakereső értékeli ki. A hibakereső valószínűleg lassabban fut, mint az eszköz.

Hiba: Konfigurációs probléma lépett fel a kijelölt hibakeresési gyorsítótípussal kapcsolatban.

Ez a hiba akkor fordul elő, ha ellentmondás van a projektbeállítások és a hibakeresés alatt álló számítógép konfigurációja között. További információt a C++ hibakeresési konfiguráció projektbeállításai című témakörben talál.

Hiba: A kijelölt hibakeresésigyorsító-típus hibakeresési illesztőprogramja nincs telepítve a célszámítógépen.

Ez a hiba akkor fordul elő, ha távoli számítógépen végzett hibakeresést. A hibakereső csak futásidőben tudja megállapítani, hogy az illesztőprogramok telepítve vannak-e a távoli PC-n. Az illesztőprogramok a grafikus kártya gyártójától érhetők el.

Hiba: Az időtúllépés észlelését és helyreállítását (TDR) le kell tiltani a távoli helyen.

A C++ AMP-számítások túllépik a Windows időtúllépés-észlelési és helyreállítási folyamata (TDR) által beállított alapértelmezett időintervallumot. Ha ez történik, a számítás megszakad, és az adatok elvesznek. További információ: TDR-k kezelése a C++ AMP-ben.