Debug del codice GPU

È possibile eseguire il debug del codice C++ in esecuzione nell'unità elaborazione grafica (GPU).Il supporto per il debug di GPU in Visual Studio include il rilevamento di eseguire, l'avvio automatico i processi e la connessione di e l'integrazione nelle finestre di debug.

Piattaforme supportate

Il debug è supportato su Windows 7, in Windows 8, in Windows Server 2008 R2e su Windows Server 2012.Per eseguire il debug sull'emulatore del software, Windows 8, o Windows Server 2012 è obbligatorio.Per eseguire il debug su hardware, è necessario installare i driver per la scheda grafica.Non tutti i fornitori di hardware implementano le funzionalità del debugger.Vedere la documentazione del fornitore per le limitazioni.

[!NOTA]

I fornitori di hardware indipendenti che desiderano supportare il debug di GPU in Visual Studio devono creare una DLL che implementa l'interfaccia di VSD3DDebug e ai propri driver.

Debug di configurazione GPU

Il debugger interrompa sia nel codice della CPU che nel codice di GPU nella stessa esecuzione dell'applicazione.Per impostazione predefinita, il debugger si interrompe nel codice della CPU.Per eseguire il debug del codice di GPU, utilizzare uno di questi due passaggi:

  • Nell'elenco Tipo di debug nella barra degli strumenti Standard, scegliere Solo GPU.

  • In Esplora soluzioni, scegliere dal menu di scelta rapida del progetto, scegliere Proprietà.Nella finestra di dialogo Pagine delle proprietà, Debugquindi selezionare Solo GPU nell'elenco Tipo di debugger.

L'avvio e associare le applicazioni

È possibile utilizzare i comandi di debug di Visual Studio per avviare e interrompere il debug di GPU.Per ulteriori informazioni, vedere Avviare, interrompere, esplorare e arrestare il debugger di Visual Studio.È inoltre possibile connettere il debugger di GPU a un processo in esecuzione, ma solo se il processo esegue il codice di GPU.Per ulteriori informazioni, vedere Procedura: eseguire la connessione a un processo in esecuzione.

Sezione esecuzione corrente del cursore e l'esecuzione in corrispondenza

Quando si esegue il debug in GPU, sono disponibili due opzioni per l'esecuzione fino alla posizione del cursore.I controlli per entrambe le opzioni disponibili nel menu di scelta rapida dell'editor di codice.

  1. Il comando Esegui fino al cursore esegue l'applicazione fino alla posizione quindi le interruzioni del cursore.Ciò non implica che il thread corrente funzioni al cursore; piuttosto, significa che il primo thread che raggiunge il punto di inserimento attiva l'interruzione.Per ulteriori informazioni, vedere [NIB] 12/13 Procedura: esecuzione fino alla posizione del cursore.

  2. Il comando Esegui Tile corrente fino al cursore esegue l'applicazione finché tutti thread nella sezione corrente non raggiungono il cursore quindi interruzioni.

Finestre di debug

Utilizzando alcune finestre di debug, è possibile esaminare, contrassegnare e bloccare i thread di GPU.Per ulteriori informazioni, vedere:

Eccezioni di sincronizzazione dei dati

Il debugger può identificare diversi stati di sincronizzazione dei dati durante l'esecuzione.Quando una condizione viene individuata, il debugger assume lo stato di interruzione.Sono disponibili due opzioniInterrompi o Continua.Tramite la finestra di dialogo Eccezioni, è possibile configurare se il debugger rileva tali condizioni e anche di condizioni che interrompe per.Per ulteriori informazioni, vedere Gestione delle eccezioni (debug).È inoltre possibile utilizzare la finestra di dialogo Opzioni per specificare che il debugger deve ignorare le eccezioni se i dati scritti non modificano il valore dei dati.Per ulteriori informazioni, vedere Generale, Debug, finestra di dialogo Opzioni.

Risoluzione dei problemi

Hh873126.collapse_all(it-it,VS.110).gifSpecificare una scelta rapida

I punti di interruzione nel codice di GPU vengono raggiunti solo se il codice è in esecuzione su tasti di scelta rapida accelerator::direct3d_ref (PER).Se non si specifica un tasto nel codice, la scelta rapida di REF viene selezionato automaticamente come Tipo acceleratore debug nelle proprietà del progetto.Se il codice in modo esplicito seleziona un tasto di scelta rapida, quindi il tasto di scelta rapida di PER non verrà utilizzato durante il debug e i punti di interruzione non verranno raggiunti a meno che l'hardware di GPU di supporto per il debug.È possibile risolvere questo scrittura del codice in modo da utilizzare il tasto di scelta rapida di REF durante il debug.Per ulteriori informazioni, vedere le proprietà del progetto e Utilizzo degli oggetti accelerator e accelerator_view e Impostazioni di progetto per una configurazione di debug C++.

Hh873126.collapse_all(it-it,VS.110).gifPunti di interruzione

I punti di interruzione nel codice di GPU supportati, ma non tutti un'espressione può essere valutata nel dispositivo.Quando un'espressione non può essere valutata nel dispositivo, viene valutata dal debugger.Il debugger potrebbe essere più lenta del dispositivo.

Hh873126.collapse_all(it-it,VS.110).gifErrore: Esiste un problema di configurazione con il tipo di debug selezionato dei tasti di scelta rapida. 

Questo errore si verifica quando c'è un'incoerenza tra le impostazioni del progetto e la configurazione del computer che sta eseguendo il debug su.Per ulteriori informazioni, vedere Impostazioni di progetto per una configurazione di debug C++.

Hh873126.collapse_all(it-it,VS.110).gifErrore: Il driver di debug per il tipo di debug selezionato tasto di scelta rapida non è installato nel computer di destinazione.

Questo errore si verifica se si esegue il debug su un computer remoto.Il debugger non può determinare fino alla fase di esecuzione se i driver installati sul computer remoto.I driver disponibili dal produttore della scheda grafica.

Hh873126.collapse_all(it-it,VS.110).gifErrore: Il rilevamento di intervallo e ripristino (TDR) devono essere disabilitate nel sito remoto.

È possibile che i calcoli di AMP C++ superino l'intervallo di tempo predefinito impostato tramite il rilevamento di intervallo di Windows e il processo di recupero (TDR).In tal caso, il calcolo viene annullato e i dati vengono persi.Per ulteriori informazioni, vedere Gestione TDRs nell'AMP C++.

Vedere anche

Attività

Procedura dettagliata: debug di un'applicazione C++ AMP

Riferimenti

Impostazioni di progetto per una configurazione di debug C++

Altre risorse

Avviare il debug di GPU in Visual Studio