Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
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
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.