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.