Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 do verificador de driver estático.
Abra o Visualizador de Defeitos do Verificador de Driver Estático
Se o SDV tiver relatado quaisquer "defeitos" (violações de regras) no painel Resultados , você poderá visualizar 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 ao longo do caminho para a violação da regra. Há uma janela do Visualizador de defeitos para cada regra que foi violada (você pode visualizar apenas uma janela do Visualizador de defeitos de cada vez).
Para abrir a janela do Visualizador de defeitos em busca de um defeito:
- Selecione uma regra na lista no nó Defeito(s).
Este procedimento funciona apenas para defeitos. O SDV não gera uma janela do Visualizador de defeitos se os resultados de uma verificação não forem defeitos, como passagens, tempos limites, espaçamentos, não aplicáveis ou qualquer outro resultado sem defeito.
A captura de ecrã a seguir mostra uma página de Relatório do Verificador de Controladores Estático.
Rever a regra
Antes de tentar encontrar a violação da regra no código, familiarize-se com as regras que o motorista violou.
A seção Static Driver Verifier Rules 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 da regra, como CancelSpinLock.slic.
Por exemplo, a regra CancelSpinLock é 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ítica no caminho do defeito é selecionado. No painel Código-fonte , a linha associada do código-fonte é realçada em azul.
A imagem a seguir mostra a vista inicial da janela Visualizador de Defeitos do Verificador de Driver Estático para uma violação da regra CancelSpinLock pelo exemplo de driver 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.
Utilizar o Painel de 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 que estão associadas ao elemento selecionado no painel Árvore de Rastreamento .
As linhas do código do driver que são executadas na trajetória até o defeito são exibidas em texto vermelho. Ao olhar 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 motorista adquire o bloqueio de rotação e, em seguida, retorna da rotina de despacho sem liberar o bloqueio de rotação.
Passo através do traço
Para começar o rastreamento, selecione um elemento no painel Árvore de Rastreamento e pressione a tecla SETA PARA BAIXO. Sempre que você pressionar SETA PARA BAIXO, o próximo elemento no painel Árvore de Rastreamento será selecionado.
Ao percorrer os elementos no painel Árvore de Trace, observe o painel Código-fonte em busca de elementos do código do controlador. 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 de seta para a esquerda. O cursor salta todas as seções fechadas do código.
À medida que você rola para baixo pelos elementos no painel Árvore de Rastreamento , o arquivo de código-fonte no qual o elemento selecionado se origina se 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.
Utilizar o Arquivo de Regras e o Painel de Estado
Você pode usar o Painel de Estado para exibir o conjunto de expressões booleanas que representam os valores das variáveis que o SDV rastreia durante a verificação.
As expressões booleanas 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 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 SDV indicam se o driver adquiriu anteriormente um bloqueio de rotação. O SDV testa para ver se o condutor adquiriu anteriormente um bloqueio de rotação, ou seja, se o valor da variável s é 1, ou seja, bloqueado. Nesse caso, s!=1 (desbloqueado), como exibido no painel Estado, o SDV configura o valor de s como 1, indicando que o bloqueio foi obtido.
Encontre 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 de seta para cima para localizar o código que mais imediatamente gerou o relatório de defeito.
Por exemplo, como mostrado na captura de tela a seguir, a rotina ABORT está associada a uma linha do arquivo CancelSpinLock.slic que relata o defeito depois de testar se o bloqueio foi adquirido (s==locked). O teste faz parte de uma sub-rotina que é realizada quando a rotina de expedição termina. A partir dessas informações, você pode inferir que o driver não conseguiu liberar um bloqueio de rotação antes de retornar da rotina de despacho.
Feche 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 Erros de uma regra:
- No menu Ficheiro, 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.