Depuração de código GPU
Você pode depurar o código do C++ que está executando na unidade de processamento (GPU) gráficos.Suporte a depuração de GPU no Visual Studio inclui detecção de raça, iniciar processos e anexação a eles, e a integração em janelas de depuração.
Plataformas suportadas
A depuração é suportado em Windows 7, em Windows 8, em Windows Server 2008 R2, e em Windows Server 2012.Para depurar no emulador de software, Windows 8, ou Windows Server 2012 são necessários.Para depurar no hardware, você deve instalar os drivers para a sua placa gráfica.Nem todos os editores de hardware implementam todos os recursos do depurador.Consulte a documentação do fornecedor para limitações.
Observação |
---|
Fornecedores de hardware independentes que deseja oferecer suporte a depuração de GPU no Visual Studio devem criar uma DLL que implementa a interface de VSD3DDebug e tem como alvo seus próprios drivers. |
Configurando depuração de GPU
O depurador não pode quebrar ambos no código de CPU e no código de GPU na mesma execução do aplicativo.Por padrão, o depurador interrompe no código da CPU.Para depurar o código de GPU, use uma dessas duas etapas:
Na lista de Depurar o tipo na barra de ferramentas Padrão , escolha Somente GPU.
Em Gerenciador de Soluções, no menu de atalho para o projeto, escolha Propriedades.Na caixa de diálogo Páginas de Propriedade , selecione Depurando, e selecione Somente GPU na lista de Tipo de Depurador .
Iniciar e anexar a aplicativos
Você pode usar os comandos de depuração do Visual Studio iniciar e parar depuração de GPU.Para obter mais informações, consulte Iniciar, interromper, navegar e parar o depurador do Visual Studio.Você também pode anexar o depurador de GPU a um processo em execução, mas somente se esse processo executa o código de GPU.Para obter mais informações, consulte Como: anexar a um processo em execução.
Quadro de execução atual do cursor e a execução ao cursor
Quando você está depurando em GPU, você tem duas opções para executar ao local do cursor.Os comandos para as duas opções estão disponíveis no menu de atalho do editor de códigos.
O comando de Executar até o Cursor executa o aplicativo até que atinja o local do cursor e nas quebras.Isso não significa que o segmento atual executa ao cursor; em vez disso, significa que o primeiro segmento que atinge o ponto do cursor aciona a interrupção.Para obter mais informações, consulte [NIB] 12/13 Como executar no local do cursor.
O comando de Executar Bloco Atual até o Cursor executa o aplicativo até que todos os segmentos no quadro atual elas atinjam o cursor e nas quebras.
Depuração Windows
Usando determinadas janelas de depuração, você pode examinar, embandeirar, e congelar segmentos de GPU.Para obter mais informações, consulte
Segmentos e processos (barra de ferramentas do local de depuração)
Exceções de sincronização de dados
O depurador pode identificar várias condições de sincronização de dados durante a execução.Enquanto uma condição for detectado, o depurador entra no estado de interrupção.Você tem duas opçõesInterromper ou Continuar.Usando a caixa de diálogo Exceções , você pode configurar se o depurador detecta essas circunstâncias e também que condições que interromperá para.Para obter mais informações, consulte (Depuração) de manipulação de exceção.Você também pode usar a caixa de diálogo Opções para especificar que o depurador deve ignorar exceções se os dados que são gravados não alteram o valor de dados.Para obter mais informações, consulte General, Debugging, caixa de diálogo Opções.
Solução de problemas
Especificando um acelerador
Os pontos de interrupção no código de GPU são batidos somente se o código está sendo executado no acelerador (referência de accelerator::direct3d_ref ).Se você não especificar um acelerador em seu código, o acelerador de referência é automaticamente selecionado como Tipo de Acelerador de Depuração nas propriedades do projeto.Se seu código seleciona explicitamente um acelerador, então o acelerador de referência não será usado durante a depuração e pontos de interrupção não serão batidos a menos que o hardware de GPU tem suporte a depuração.Você pode corrigir escrevendo seu código de tal forma que usa o acelerador de referência durante a depuração.Para obter mais informações, consulte as propriedades do projeto e Usando objetos accelerator e accelerator_view e Configurações de projeto para uma configuração de depuração do C++.
Pontos de interrupção condicionais
Os pontos de interrupção condicionais no código de GPU são suportados, mas não cada expressão pode ser avaliada no dispositivo.Quando uma expressão não pode ser avaliada no dispositivo, é avaliada no depurador.O depurador é possível executar mais lentamente do dispositivo.
Erro: Há um problema de configuração com o tipo selecionado depuração de aceleração.
Este erro ocorre quando há uma inconsistência entre as configurações do projeto e a configuração PC que você está depurando sobre.Para obter mais informações, consulte Configurações de projeto para uma configuração de depuração do C++.
Erro: O driver de depuração para o tipo selecionado depuração de aceleradores não está instalado no computador de destino.
Este erro ocorre se você está depurando em PC remoto.O depurador não pode determinar até o tempo de execução se os drivers são instalados em PC remoto.Drivers estão disponíveis do fabricante de placas gráficas.
Erro: Detecção de tempo limite e recuperação (TDR) devem ser desativadas no site remoto.
É possível para cálculos de AMP de C++ exceder o intervalo de tempo padrão que é definido pela detecção de tempo limite do Windows e pelo processo de recuperação (TDR).Quando isso acontece, a computação será cancelada e os dados são perdidos.Para obter mais informações, Tratamento TDRs no AMP de C++consulte.
Consulte também
Tarefas
Passo a passo: Depuração de um aplicativo de AMP C++
Referência
Configurações de projeto para uma configuração de depuração do C++