Compartilhar via


Visão geral da camada de depuração Direct2D

A camada de depuração Direct2D fornece mensagens de depuração em tempo de design para que você minimize a falha do aplicativo de runtime. Essa visão geral descreve os conceitos básicos da camada de depuração Direct2D. Ele pressupõe que você esteja familiarizado com a criação de aplicativos básicos de Direct2D.

Essa visão geral contém as seções a seguir.

Qual é a camada de depuração Direct2D

A camada de depuração Direct2D, implementada separadamente de Direct2D em sua própria DLL chamada d2d1debug.dll, fornece mensagens de depuração para permitir que você use funções Direct2D com precisão. As mensagens de depuração geralmente resultam de violações de contrato de API, como parâmetros inválidos (podem ser relacionados ao Direct3D), recursos inválidos, violações de threading e problemas de desempenho, como o uso de uma camada quando um clipe seria suficiente. Para especificar quantas informações são rastreadas pela camada de depuração, você pode especificar um dos três níveis de depuração: informações, aviso e erro; e uma mensagem de erro de nível dispara o ponto de interrupção para ajudá-lo a depurar.

Instalando a camada de depuração Direct2D

Para obter instruções sobre como instalar a camada de depuração, consulte Instalando a camada de depuração do Direct2D.

Habilitando a camada de depuração

Para habilitar a camada de depuração em seu aplicativo, especifique um valor D2D1_DEBUG_LEVEL diferente de D2D1_DEBUG_LEVEL_NONE ao criar uma fábrica com a função D2D1CreateFactory .

Observação

Se a camada de depuração Direct2D estiver habilitada, o Direct2D efeito de gerenciamento de cores (CLSID_D2D1ColorManagement) poderá causar uma violação de acesso ao definir um contexto de cor. A solução alternativa é desabilitar a camada de depuração ao usar o efeito de gerenciamento de cores

 

Habilitar a camada de depuração para uma fábrica também permite informações de depuração para qualquer objeto criado por essa fábrica.

O exemplo a seguir habilita a camada de depuração para uma fábrica quando o aplicativo é compilado para a configuração de build DEBUG.

        // If you set the options.debugLevel to D2D1_DEBUG_LEVEL_NONE,
        // the debug layer is not enabled.
#if defined(DEBUG) || defined(_DEBUG)
        D2D1_FACTORY_OPTIONS options;
        options.debugLevel = D2D1_DEBUG_LEVEL_INFORMATION;

        hr = D2D1CreateFactory(
            D2D1_FACTORY_TYPE_SINGLE_THREADED,
            options,
            &m_pD2DFactory
            );
#else
        hr = D2D1CreateFactory(
            D2D1_FACTORY_TYPE_SINGLE_THREADED,
            &m_pD2DFactory
            );
#endif

Observação

Se nenhuma opção de fábrica for especificada ou um nível de depuração de "nenhum" for especificado, a camada de depuração não será invocada. A camada de depuração nunca deve estar ativa na versão de lançamento de um aplicativo.

 

A próxima seção descreve os diferentes níveis de depuração definidos pela enumeração D2D1_DEBUG_LEVEL .

Níveis de depuração

A enumeração D2D1_DEBUG_LEVEL especifica três níveis de depuração: D2D1_DEBUG_LEVEL_ERROR (erro), D2D1_DEBUG_LEVEL_WARNING (aviso) e D2D1_DEBUG_LEVEL_INFORMATION (informações). Esses níveis são interpretados da seguinte maneira:

  • Erro: Direct2D envia mensagens de erro graves para a camada de depuração. Por exemplo, quebrar uma restrição de threading gerará um erro grave.

  • Aviso: Direct2D envia mensagens de erro e avisos para a camada de depuração para que você possa resolver qualquer uma dessas mensagens.

  • Informações: Direct2D envia mensagens de erro, avisos e informações de diagnóstico adicionais para a camada de depuração. Por exemplo, as mensagens de melhoria de desempenho serão enviadas nesse nível de depuração.

O valor D2D1_DEBUG_LEVEL_NONE (nenhum) indica que Direct2D não fornece nenhuma saída de depuração.

Depurar Mensagens