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 .
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.
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.
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 .
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.
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.
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.
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.