Compartilhar via


Classe CDebugReportHook

Use essa classe para enviar relatórios de depuração para um pipe nomeado.

Sintaxe

class CDebugReportHook

Membros

Construtores públicos

Nome Descrição
CDebugReportHook::CDebugReportHook Chama SetPipeName, SetTimeout e SetHook.
CDebugReportHook::~CDebugReportHook Chama CDebugReportHook::RemoveHook.

Métodos públicos

Nome Descrição
CDebugReportHook::CDebugReportHookProc (Estático) A função de relatório personalizada que é conectada ao processo de relatório de depuração em tempo de execução C.
CDebugReportHook::RemoveHook Chame esse método para interromper o envio de relatórios de depuração para o pipe nomeado e restaurar o gancho de relatório anterior.
CDebugReportHook::SetHook Chame esse método para começar a enviar relatórios de depuração para o pipe nomeado.
CDebugReportHook::SetPipeName Chame esse método para definir o computador e o nome do pipe para o qual os relatórios de depuração serão enviados.
CDebugReportHook::SetTimeout Chame esse método para definir o tempo em milissegundos que essa classe aguardará para que o pipe nomeado fique disponível.

Comentários

Crie uma instância dessa classe em builds de depuração de seus serviços ou aplicativos para enviar relatórios de depuração para um pipe nomeado. Os relatórios de depuração são gerados chamando _CrtDbgReport ou usando um wrapper para essa função, como as macros ATLTRACE e ATLASSERT.

O uso dessa classe permite depurar interativamente componentes em execução em estações de janela não interativas.

Observe que os relatórios de depuração são enviados usando o contexto de segurança subjacente do thread. A representação está temporariamente desabilitada para que os relatórios de depuração possam ser exibidos em situações em que a representação de usuários de baixo privilégio está ocorrendo, como em aplicativos Web.

Requisitos

Cabeçalho: atlutil.h

CDebugReportHook::CDebugReportHook

Chama SetPipeName, SetTimeout e SetHook.

CDebugReportHook(
    LPCSTR szMachineName = ".",
    LPCSTR szPipeName = "AtlsDbgPipe",
    DWORD dwTimeout = 20000) throw();

Parâmetros

szMachineName
O nome da máquina para a qual a saída de depuração deve ser enviada. O padrão é o computador local.

szPipeName
O nome do pipe nomeado para o qual a saída de depuração deve ser enviada.

dwTimeout
O tempo em milissegundos que essa classe aguardará para que o pipe nomeado fique disponível.

CDebugReportHook::~CDebugReportHook

Chama CDebugReportHook::RemoveHook.

~CDebugReportHook() throw();

CDebugReportHook::CDebugReportHookProc

A função de relatório personalizada que é conectada ao processo de relatório de depuração em tempo de execução C.

static int __cdecl CDebugReportHookProc(
    int reportType,
    char* message,
    int* returnValue) throw();

Parâmetros

reportType
O tipo do relatório (_CRT_WARN, _CRT_ERROR ou _CRT_ASSERT).

message
A cadeia de caracteres da mensagem.

returnValue
O valor que deve ser retornado por _CrtDbgReport.

Valor de retorno

Retorna FALSE se o gancho tratar completamente a mensagem em questão, de modo que nenhum relatório adicional seja necessário. Retorna TRUE se _CrtDbgReport relatar a mensagem da maneira normal.

Comentários

A função de relatório tenta abrir o pipe nomeado e se comunicar com o processo na outra extremidade. Se o pipe estiver ocupado, a função de relatório aguardará até que o pipe esteja livre ou o tempo limite expire. O tempo limite pode ser definido pelo construtor ou uma chamada para CDebugReportHook::SetTimeout.

O código nessa função é executado no contexto de segurança subjacente do thread de chamada, ou seja, a representação é desabilitada durante a duração dessa função.

CDebugReportHook::RemoveHook

Chame esse método para interromper o envio de relatórios de depuração para o pipe nomeado e restaurar o gancho de relatório anterior.

void RemoveHook() throw();

Comentários

Chama _CrtSetReportHook2 para restaurar o gancho de relatório anterior.

CDebugReportHook::SetHook

Chame esse método para começar a enviar relatórios de depuração para o pipe nomeado.

void SetHook() throw();

Comentários

Chama _CrtSetReportHook2 para ter relatórios de depuração roteados por meio de CDebugReportHookProc para o pipe nomeado. Essa classe controla o gancho de relatório anterior para que ele possa ser restaurado quando RemoveHook for chamado.

CDebugReportHook::SetPipeName

Chame esse método para definir o computador e o nome do pipe para o qual os relatórios de depuração serão enviados.

BOOL SetPipeName(
    LPCSTR szMachineName = ".",
    LPCSTR szPipeName = "AtlsDbgPipe") throw();

Parâmetros

szMachineName
O nome da máquina para a qual a saída de depuração deve ser enviada.

szPipeName
O nome do pipe nomeado para o qual a saída de depuração deve ser enviada.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

CDebugReportHook::SetTimeout

Chame esse método para definir o tempo em milissegundos que essa classe aguardará para que o pipe nomeado fique disponível.

void SetTimeout(DWORD dwTimeout);

Parâmetros

dwTimeout
O tempo em milissegundos que essa classe aguardará para que o pipe nomeado fique disponível.

Confira também

Classes