Método ICorDebugUnmanagedCallback::D ebugEvent
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
.
Observações
Se o thread que está sendo depurado for um thread do Win32, não use nenhum membro da interface de depuração do Win32. Você pode chamar ICorDebugController::Continue
somente em um thread Win32 e somente quando continuar após um evento fora de banda.
O DebugEvent
retorno de chamada não segue as regras padrão para retornos de chamada. Quando você chamar DebugEvent
, o processo estará no estado bruto, OS-debug interrompido. O processo não será sincronizado. Ele entrará automaticamente no estado sincronizado quando necessário para satisfazer solicitações de informações sobre 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. Os eventos fora de banda podem ocorrer a qualquer momento, mesmo quando o aplicativo que está sendo depurado aparece parado e quando já existe um evento em banda pendente.
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 ignorarão todos os pontos de interrupção fora de banda automaticamente. Assim, os únicos pontos de interrupção fora de banda que são despachados 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: Consulte Requisitos do sistema.
Cabeçalho: CorDebug.idl, CorDebug.h
Biblioteca: CorGuids.lib
Versões do .NET Framework: Disponível desde 1.0