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 painel Estado exibe expressões booleanas para os valores das variáveis no driver, no modelo do sistema operacional e na regra. SDV usa essas expressões para construir uma abstração do driver, o modelo do sistema operacional e a regra, e usa-os na verificação.
A captura de tela a seguir mostra um exemplo de painel Estado no Visualizador de Defeitos.
O painel Estado é um componente do Visualizador de Defeitos. Quando um elemento de código é realçado no painel Árvore de Rastreamento e a linha correspondente de código-fonte é realçada no painel Código Fonte, o painel Estado exibe as expressões booleanas (do conjunto de expressões que o SDV está rastreando para o driver) que avaliam como TRUE antes que a linha de código seja executada.
Rastreando expressões booleanas
Ao verificar cada regra para o condutor, o SDV monitoriza um conjunto de expressões booleanas. 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.
Interpretando expressões no painel de estado
A maioria das expressões que aparecem no painel Estado estão relacionadas a variáveis que são evidentes no código da regra. Você pode usar o código-fonte para a regra (no arquivo RuleName.slic no painel Código-fonte ) para ajudá-lo a interpretar as expressões.
No entanto, algumas expressões aparecem no painel Estado sem detalhes sobre sua representação interna que possam ajudá-lo a interpretá-las. Por exemplo
x!=x
Para SDV, esta expressão representa uma condição na qual o valor da variável x neste ponto do rastreamento não é igual ao valor da mesma variável em um ponto diferente do rastreamento. Use o código-fonte do driver, o código da regra (*.slic) e os elementos no painel Árvore de Rastreamento para ajudá-lo a interpretar as expressões.
Separadores de Passos no Painel de Estado
As expressões booleanas no painel Estado são exibidas em guias. Cada separador representa uma etapa no rastreamento de todo o código fonte utilizado na verificação. O número no separador de passo representa a ordem dessa etapa na sequência.
Normalmente, como cada linha do código-fonte representa apenas uma etapa no rastreamento, haverá apenas uma guia de etapa no painel Estado . No entanto, um código complexo pode gerar muitas etapas.
Por exemplo, a captura de tela a seguir mostra o painel Estado exibindo uma linha de código que inclui um ponteiro de função. Nesse caso, cada guia de etapa representa uma etapa na resolução do ponteiro, a chamada da função apontada e o seu resultado. (O número de guias de etapa revela quantas etapas são necessárias para que o SDV consiga resolver o ponteiro de função.)
Para exibir cada guia de etapa no painel Estado em ordem, selecione a linha de código associada no painel Código-fonte . Em seguida, clique na linha de código no painel Código-fonte repetidamente. Cada vez que você clica na linha de código selecionada, o SDV exibe a guia da próxima etapa até que você tenha percorrido todas as guias da etapa. A seta amarela curva indica a etapa selecionada.
Você também pode clicar em qualquer guia no painel Estado para exibir seu conteúdo.
Comentar
O SDV geralmente rastreia expressões no painel Estado que não aparecem na regra e não parecem estar diretamente relacionadas à regra. Essas expressões resultam de heurísticas sofisticadas que o SDV usa em suas tentativas de correlacionar diferentes valores e diferentes violações de regras. Em algumas situações, o SDV não pode avaliar corretamente a expressão. Nesses casos, o SDV fornece uma mensagem que diz que o estado atual é desconhecido e exibe a expressão da etapa com o último estado conhecido. Consulte o exemplo de código a seguir para obter uma explicação:
Unknown state. Last known state from step 120.
sdv irql current ==2
sdv irql current!=1
sdv irql current!=0