Compartilhar via


Usando o relatório verificador de driver estático

O Relatório SDV é uma exibição interativa dos resultados da verificação. Esta seção explica como usar o Relatório SDV para localizar um erro de codificação no driver. Para obter informações detalhadas sobre o relatório, os recursos das janelas e os elementos nas janelas, consulte Relatório verificador de driver estático.

Abrir o Visualizador de Defeitos do Verificador de Driver Estático

Se o SDV relatou quaisquer "defeitos" (violações de regra) no painel Resultados , você poderá exibir o código envolvido na violação na janela Visualizador de Defeitos do Relatório do Verificador de Driver Estático. A janela Visualizador de Defeitos exibe o código no caminho para a violação de regra. Há uma janela visualizador de defeito para cada regra que foi violada (você pode exibir apenas uma janela visualizador de defeito por vez).

Para abrir a janela Visualizador de Defeitos para um defeito:

  • Selecione uma regra na lista no nó Defeitos .

Ícone de círculo vermelho com um X branco, representando um defeito.

Este procedimento funciona apenas para defeitos. O SDV não gerará uma janela visualizador de defeitos se os resultados de uma verificação não forem defeitos, como passagens, tempos limite, espaçamentos, não aplicáveis ou qualquer outro resultado sem defeito.

A captura de tela a seguir mostra uma página Relatório do Verificador de Driver Estático.

Captura de tela de uma página de Relatório do Verificador de Driver Estático.

Examinar a regra

Antes de tentar encontrar a violação de regra no código, familiarize-se com as regras que o driver violou.

A seção Regras do Verificador de Driver Estático inclui um tópico que explica cada regra, por exemplo, CancelSpinLock.

Para ver o código da regra, no painel Código-Fonte do Relatório do Verificador de Driver Estático, clique na guia com o código de regra, como CancelSpinLock.slic.

Por exemplo, a regra CancelSpinLock será violada se o driver chamar IoAcquireCancelSpinLock ou IoReleaseCancelSpinLock fora de ordem ou se o driver sair da rotina antes de liberar o bloqueio de rotação.

Rastrear o caminho do defeito

Quando a janela Visualizador de Defeitos é aberta, o elemento no painel Árvore de Rastreamento que representa a primeira chamada de driver crítico no caminho do defeito é selecionado. No painel Código-Fonte , a linha associada do código-fonte é realçada em azul.

A captura de tela a seguir mostra a exibição de abertura da janela Visualizador de Defeitos do Verificador de Driver Estático para uma violação da regra CancelSpinLock pelo driver de exemplo do Fail_Driver1. Neste exemplo, a primeira chamada de driver no caminho para uma violação da regra CancelSpinLock é uma chamada para IoAcquireCancelSpinLock na rotina DispatchSystemControl do driver.

Captura de tela da exibição de abertura da janela Visualizador de Defeitos do Verificador de Driver Estático para uma violação da regra CancelSpinLock.

Usar o painel Código-Fonte

O painel Código-Fonte exibe os arquivos de origem usados na verificação. Quando um elemento no painel Árvore de Rastreamento é selecionado, o arquivo de código-fonte associado ao elemento aparece na parte superior da pilha de arquivos no painel código-fonte adjacente. Para ver um arquivo de origem diferente, clique na guia do arquivo de origem no painel Código-Fonte .

A captura de tela a seguir mostra o painel Código-Fonte. Neste painel Código-Fonte , as linhas de código realçadas em azul claro são as associadas ao elemento selecionado no painel Árvore de Rastreamento .

Captura de tela do painel Código-Fonte no Visualizador de Defeitos do Verificador de Driver Estático.

As linhas no código do driver executadas no caminho para o defeito são exibidas em texto vermelho. Olhando apenas para as linhas de texto vermelho, como as linhas 116 e 118 neste exemplo, às vezes você pode ver o defeito, especialmente um defeito simples como o usado neste exemplo. Nesse caso, o driver adquire o bloqueio de rotação e retorna da rotina de expedição sem liberar o bloqueio de rotação.

Percorrer o rastreamento

Para começar a rastrear, selecione um elemento no painel Árvore de Rastreamento e pressione a tecla SETA PARA BAIXO. Sempre que você pressiona SETA PARA BAIXO, o próximo elemento no painel Árvore de Rastreamento é selecionado.

Ao percorrer os elementos no painel Árvore de Rastreamento, watch painel Código-Fonte para elementos do código-fonte. Para expandir uma seção recolhida do código, pressione a tecla SETA PARA A DIREITA. Para recolher uma seção expandida do código, pressione a tecla SETA PARA A ESQUERDA. O cursor ignora todas as seções recolhidas do código.

Conforme você rola para baixo pelos elementos no painel Árvore de Rastreamento , o arquivo de código-fonte no qual o elemento selecionado se origina move para a parte superior da pilha de arquivos no painel Código-Fonte e a linha de código associada é realçada.

A captura de tela a seguir mostra o Visualizador de Defeitos do Verificador de Driver Estático com os painéis Árvore de Rastreamento e Código-Fonte.

Captura de tela de uma página de Relatório do Verificador de Driver Estático com painéis árvore de rastreamento e código-fonte.

Usar o Arquivo de Regra e o Painel de Estado

Você pode usar o Painel de Estado para exibir o conjunto de expressões boolianas que representam os valores das variáveis que o SDV rastreia durante a verificação.

As expressões boolianas exibidas no painel Estado são as expressões nesse conjunto que são avaliadas como TRUE. Se o elemento no painel Árvore de Rastreamento alterar o valor de qualquer expressão, o conteúdo do painel Estado será alterado para exibir o novo conjunto de expressões que são avaliadas como TRUE.

Ao percorrer o painel Árvore de Rastreamento , você pode observar como o SDV usa os valores dessas variáveis para avaliar as expressões usadas no arquivo de regras (*.slic).

A captura de tela a seguir da página Relatório do Verificador de Driver Estático mostra como os testes de SDV indicam se o driver havia adquirido anteriormente um bloqueio de rotação. O SDV testa se o driver havia adquirido anteriormente um bloqueio de rotação, ou seja, se o valor da variável s for 1, o que significa bloqueado. Nesse caso, s!=1 (desbloqueado), conforme exibido no painel Estado, portanto, o SDV define o valor de s como 1, indicando que o bloqueio foi adquirido.

Captura de tela de uma página do Relatório do Verificador de Driver Estático mostrando testes de SDV para o bloqueio de rotação adquirido anteriormente.

Localizar a rotina ABORT

Quando o código do driver viola uma regra, o painel Árvore de Rastreamento contém uma rotina ABORT para relatar o defeito.

Quando o caminho de código para um defeito é longo e complexo, geralmente é útil rolar para baixo no painel Árvore de Rastreamento até encontrar a rotina ABORT e, em seguida, usar a tecla SETA PARA CIMA para encontrar o código que mais imediatamente disparou o relatório de defeito.

Por exemplo, conforme mostrado na captura de tela a seguir, a rotina ABORT é associada a uma linha do arquivo CancelSpinLock.slic que relata o defeito após testar se o bloqueio é adquirido (s==bloqueado). O teste faz parte de uma sub-rotina que é executada quando a rotina de expedição termina. Com essas informações, você pode inferir que o driver falhou ao liberar um bloqueio de rotação antes de retornar da rotina de expedição.

Captura de tela de uma página do Relatório do Verificador de Driver Estático mostrando a rotina ABORT associada a uma linha do arquivo CancelSpinLock.slic.

Fechar o Visualizador de Defeitos do Verificador de Driver Estático

Depois de identificar o erro de código que causou o defeito, você pode fechar a janela Visualizador de Defeitos do Verificador de Driver Estático para a regra atual e, em seguida, abrir o Visualizador de Defeitos para uma regra diferente.

Para fechar o Visualizador de Defeitos para uma regra:

  • No menu Arquivo , selecione Sair.

Você também pode clicar no botão Fechar (X) para o Visualizador de Defeitos. Ele está localizado logo abaixo do botão Fechar (X) para o Relatório do Verificador de Driver Estático.

A captura de tela a seguir mostra como fechar o Visualizador de Defeitos.

Captura de tela demonstrando como fechar o Visualizador de Defeitos para uma regra no Verificador de Driver Estático.