Compartilhar via


Método ICorDebugUnmanagedCallback::DebugEvent

Notifica o depurador de que um evento nativo foi acionado.

Sintaxe

HRESULT DebugEvent (
    [in] LPDEBUG_EVENT  pDebugEvent,
    [in] BOOL           fOutOfBand
);

Parâmetros

pDebugEvent [em] Um ponteiro para o evento nativo.

fOutOfBand [in] true, se a interação com o estado do processo gerenciado for impossível após a ocorrência de um evento não gerenciado, até que o depurador chame ICorDebugController::Continue; caso contrário, false.

Comentários

Se o thread que está sendo depurado for um thread Win32, não use nenhum membro da interface de depuração do Win32. Você só pode chamar ICorDebugController::Continue em um thread win32 e somente ao continuar após um evento fora de banda.

O retorno de chamada DebugEvent não segue as regras padrão para retornos de chamada. Quando você chamar DebugEvent, o processo estará no estado bruto e parado de depuração do sistema operacional. O processo não será sincronizado. Ele vai entrar automaticamente no estado sincronizado quando necessário para atender às solicitações de informações sobre o código gerenciado, o que pode resultar em outros retornos de chamada aninhados DebugEvent.

Chame ICorDebugProcess::ClearCurrentException no processo para ignorar um evento de exceção antes de continuar o processo. Chamar esse método envia DBG_CONTINUE em vez de DBG_EXCEPTION_NOT_HANDLED na solicitação de continuação e limpa automaticamente pontos de interrupção fora de banda e exceções de etapa única. Eventos fora de banda podem vir a qualquer momento, mesmo quando o aplicativo que está sendo depurado aparece parado e quando já existe um evento pendente na banda.

No .NET Framework versão 2.0, o depurador deve continuar imediatamente após um evento de ponto de interrupção fora de banda. O depurador deve estar usando os métodos ICorDebugProcess2::SetUnmanagedBreakpoint e ICorDebugProcess2::ClearUnmanagedBreakpoint para adicionar e remover pontos de interrupção. Esses métodos vão ignorar todos os pontos de interrupção fora da banda automaticamente. Portanto, os únicos pontos de interrupção fora da banda que são enviados devem ser pontos de interrupção brutos que já estão no fluxo de instruções, como uma chamada para a função Win32 DebugBreak. Não tente usar ICorDebugProcess::ClearCurrentException, ICorDebugProcess::GetThreadContext, ICorDebugProcess::SetThreadContext ou qualquer outro membro da API de depuração.

Requisitos

Plataformas: confira Requisitos do sistema.

Cabeçalho: CorDebug.idl, CorDebug.h

Biblioteca: CorGuids.lib

Versões do .NET Framework: Disponíveis desde a versão 1.0

Confira também