Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os filtros de evento fornecem filtragem de eventos simples; eles influenciam como o mecanismo de depurador prossegue depois que um evento ocorre em um destino. Quando ocorre um evento, o mecanismo determina se esse evento corresponde a um filtro de evento. Se isso acontecer, o status de interrupção do filtro de evento influenciará se o depurador invadirá o destino. Se o evento for um evento de exceção, o status de processamento determinará se a exceção deve ser considerada tratada ou não tratada no destino.
Nota Se precisar de uma filtragem de eventos mais sofisticada, callbacks de evento poderão ser usados.
Os filtros de evento são divididos em três categorias.
Filtros de evento específicos. Estes são os filtros para todos os eventos não-excepcionais. Consulte DEBUG_FILTER_XXX para obter uma lista desses eventos.
Filtros de exceção específicos. O primeiro filtro de exceção específico é o filtro de exceção padrão. O restante são filtros para as exceções para as quais o motor possui filtros embutidos. Consulte exceções específicas para obter uma lista dos filtros de exceção específicos.
Filtros de exceção arbitrários. Estes são filtros para eventos de exceção que foram adicionados manualmente.
Os filtros nas categorias 1 e 2 são coletivamente conhecidos como filtros específicos e os filtros nas categorias 2 e 3 são coletivamente conhecidos como filtros de exceção. O número de filtros em cada categoria é retornado por GetNumberEventFilters.
Um evento corresponderá a um filtro de evento específico se o tipo do evento for o mesmo que o tipo do filtro. Alguns filtros de evento têm um parâmetro adicional que restringe ainda mais os eventos que eles correspondem.
Um evento de exceção corresponderá a um filtro de exceção se o código de exceção do evento de exceção for o mesmo que o código de exceção do filtro de exceção. Se não houver nenhum filtro de exceção com o mesmo código de exceção que o evento de exceção, o evento de exceção será tratado pelo filtro de exceção padrão.
Comandos e parâmetros
Os filtros de evento podem ter um comando de depurador associado a eles. Esse comando é executado pelo mecanismo quando ocorre um evento correspondente ao filtro. GetEventFilterCommand e SetEventFilterCommand podem ser usados para obter e definir esse comando. Para filtros de exceção, esse comando é executado na primeira chance da exceção. Um comando de segunda chance separado pode ser executado no evento de exceção de segunda chance. Para obter e definir o comando de segunda chance, use GetExceptionFilterSecondCommand e SetExceptionSecondChanceCommand.
Os parâmetros para filtros de eventos específicos e filtros de exceção são retornados por GetSpecificFilterParameters e GetExceptionFilterParameters. O status de interrupção e o status de tratamento para filtros de evento podem ser definidos usando SetSpecificFilterParameters e SetExceptionFilterParameters.
SetExceptionFilterParameters também pode ser usado para adicionar e remover filtros de exceção arbitrários.
Uma breve descrição de filtros específicos é retornada por GetEventFilterText.
Alguns filtros específicos aceitam argumentos que restringem os eventos aos quais o filtro corresponde. GetSpecificFilterArgument e SetSpecificFilterArgument obterão e definirão argumentos para esses filtros específicos que dão suporte a argumentos. Se um filtro específico não tiver nenhum argumento, não há restrição quanto aos eventos aos quais ele corresponde. A tabela a seguir lista os filtros de evento que levam argumentos e como eles restringem os eventos que correspondem a eles:
| Acontecimento | Critérios de correspondência |
|---|---|
Criar processo |
O nome do processo criado deve corresponder ao argumento.1 |
Processo de saída |
O nome do processo encerrado deve corresponder ao argumento.1 |
Módulo de carga |
O nome do módulo carregado deve corresponder ao argumento.1 |
Descarregar Módulo |
O endereço base do módulo descarregado deve ser o mesmo que o argumento.2 |
Saída de destino |
A saída de depuração do destino deve corresponder ao argumento.3 |
Nota
O argumento usa a sintaxe curinga de string e é comparado com o nome da imagem (ignorando o caminho) quando o evento ocorre. Se o nome do módulo ou processo não estiver disponível, ele será considerado uma correspondência.
O argumento é uma expressão que é avaliada pelo mecanismo quando o argumento é definido.
O argumento usa a sintaxe curinga da cadeia de caracteres e é comparado com a saída de depuração do destino. Se a saída não for conhecida, ela será considerada uma correspondência.
Código de índice e exceção
Cada filtro de evento tem um índice. O índice é um número entre zero e um a menos do que o número total de filtros (inclusive). O intervalo de índice para cada categoria de filtros pode ser encontrado nos valores SpecificEvents, SpecificExceptions e ArbitraryExceptions retornados por GetNumberEventFilters, conforme descrito na tabela a seguir:
| Filtros de Evento | Índice do primeiro filtro | Número de filtros |
|---|---|---|
Filtros de evento específicos |
0 |
SpecificEvents |
filtros de exceção específicos |
SpecificEvents |
SpecificExceptions |
filtros de exceção arbitrários |
SpecificEvents + SpecificExceptions |
ArbitraryExceptions |
Os índices dos filtros de evento específicos são encontrados na primeira tabela localizada no tópico DEBUG_FILTER_XXX. O índice do filtro de exceção padrão (o primeiro filtro de exceção específico) é SpecificEvents. Quando um filtro de exceção arbitrária é removido, os índices dos outros filtros arbitrários de exceção podem ser alterados.
Os filtros de exceção geralmente são especificados pelo código de exceção. No entanto, alguns métodos exigem o índice da exceção. Para localizar o índice de um filtro de exceção para uma determinada exceção, use GetExceptionFilterParameters para iterar em todos os filtros de exceção até encontrar aquele com o mesmo código de exceção que a exceção. Os códigos de exceção para os filtros de exceção específicos podem ser encontrados no tópico Exceções Específicas.
Erros do sistema
Quando ocorrer um erro do sistema, o mecanismo entrará no depurador ou imprimirá o erro no fluxo de saída, se o erro ocorrer nos níveis especificados ou abaixo. Esses níveis são retornados por GetSystemErrorControl e podem ser alterados usando SetSystemErrorControl.