Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Отчет SDV — это интерактивное отображение результатов проверки. В этом разделе объясняется, как использовать отчет SDV для поиска ошибки кодирования в драйвере. Подробные сведения о отчете, функциях окон и элементах в окнах см. в отчете о проверке статических драйверов.
Откройте средство просмотра дефектов статической проверки драйверов
Если SDV сообщил о любых "дефектах" (нарушениях правил) в области результатов , можно просмотреть код, связанный с нарушением в окне просмотра дефектов отчета о проверке статических драйверов. Окно просмотра дефектов отображает код, относящийся к нарушению правила. Существует одно окно просмотра дефектов для каждого правила, которое было нарушено (одновременно можно просмотреть только одно окно просмотра дефектов ).
Чтобы открыть окно просмотра дефектов:
- Выберите правило из списка в узле "Дефекты".
Эта процедура применима только к дефектам. SDV не создает окно просмотра дефектов, если результаты проверки не являются дефектами, такими как успешно пройденные проверки, истечения времени, незначительные сбои, неподходящие случаи или любой другой результат, не связанный с дефектами.
На следующем снимке экрана показана страница отчета о проверке статических драйверов.
Проверка правила
Прежде чем попытаться найти нарушение правила в коде, ознакомитесь с правилами, которые нарушил водитель.
Раздел "Правила проверки статических драйверов" содержит раздел, который объясняет каждое правило, например CancelSpinLock.
Чтобы просмотреть код правила, в области исходного кода отчета средства проверки статического драйвера щелкните вкладку с кодом правила, например CancelSpinLock.slic.
Например, правило CancelSpinLock нарушается, если драйвер вызывает IoAcquireCancelSpinLock или IoReleaseCancelSpinLock вне порядка, или если драйвер завершает подпрограмму, прежде чем освободить спин-блокировку.
Отслеживание пути дефекта
Когда откроется окно просмотра дефектов , выбран элемент в области дерева трассировки , представляющий первый критический вызов драйвера в пути к дефекту. В области исходного кода связанная строка исходного кода выделена синим цветом.
На следующем снимке экрана показано открываемое представление окна средства просмотра дефектов статического драйвера проверки драйверов для нарушения правила CancelSpinLock с помощью примера драйвера Fail_Driver1. В этом примере первый вызов драйвера в пути к нарушению правила CancelSpinLock является вызовом IoAcquireCancelSpinLock в подпрограмме DispatchSystemControl драйвера.
Используйте область исходного кода
На панели исходного кода отображаются исходные файлы, используемые в проверке. При выборе элемента в области "Дерево трассировки " файл исходного кода, связанный с элементом, отображается в верхней части стека файлов в соседней области исходного кода . Чтобы просмотреть другой исходный файл, щелкните вкладку исходного файла на панели исходного кода .
На следующем снимке экрана показана область исходного кода. В этой области исходного кода строки кода, выделенные бледно-синей, являются теми, которые связаны с выбранным элементом в области дерева трассировки .
Строки в коде драйвера, выполняемые в пути к дефекту, отображаются в красном тексте. Просматривая только строки красного текста, такие как строка 116 и 118 в этом примере, иногда можно увидеть дефект, особенно простой дефект, как используемый в этом примере. В этом случае драйвер получает блокировку спина, а затем возвращается из подпрограммы отправки без освобождения блокировки спина.
Шаг по трассировки
Чтобы начать трассировку, выберите элемент в области «Дерево трассировки» и нажмите клавишу СТРЕЛКА ВНИЗ. Каждый раз, когда вы нажимаете СТРЕЛКУ ВНИЗ, выбирается следующий элемент в панели "Дерево трассировки".
При пошаговом переходе к элементам в области "Дерево трассировки " просмотрите область исходного кода для элементов из кода драйвера. Чтобы развернуть свернутый раздел кода, нажмите клавишу СТРЕЛКИ ВПРАВО. Чтобы свернуть развернутый раздел кода, нажмите клавишу со стрелкой влево на клавиатуре. Курсор пропускает все свернутые секции кода.
Прокручивая вниз элементы в области дерева трассировки, файл исходного кода, в котором находится выбранный элемент, перемещается в верхнюю часть стека файлов в области исходного кода, и выделяется соответствующая строка кода.
На следующем снимке экрана показано средство просмотра дефектов статического драйвера с деревом трассировки и панелью исходного кода.
Используйте файл правил и панель состояния
Область состояния можно использовать для просмотра набора логических выражений, представляющих значения переменных, отслеживаемых SDV во время проверки.
Логические выражения, которые отображаются в области состояния, — это те выражения из этого набора, которые оцениваются как TRUE. Если элемент в области "Дерево трассировки" изменяет значение любого выражения, содержимое области состояния изменится, чтобы отобразить новый набор выражений, которые оцениваются как TRUE.
При шаге по панели "Дерево трассировки " можно наблюдать, как SDV использует значения этих переменных для оценки выражений, используемых в файле правил (*.slic).
На следующем снимке экрана на странице отчета о проверке Статического Драйвера показано, как тесты SDV показывают, приобрел ли драйвер блокировку спина. SDV выполняет тесты, чтобы проверить, захватил ли драйвер блокировку спина, то есть если значение переменной s равно 1, это означает, что блокировка активна. В этом случае s!=1 (разблокировано), как показано в области состояния, поэтому SDV задает значение s1, указывающее, что блокировка получена.
Найдите процедуру ABORT
Если код драйвера нарушает правило, область дерева трассировки содержит подпрограмму ABORT для создания отчетов о дефекте.
Если путь кода к дефекту длинный и сложный, часто полезно прокручивать вниз в области дерева трассировки , пока не найдете подпрограмму ABORT , а затем используйте клавишу СТРЕЛКА ВВЕРХ, чтобы найти код, который наиболее немедленно активировал отчет о дефектах.
Например, как показано на следующем снимке экрана, подпрограмма ABORT связана со строкой из файла CancelSpinLock.slic, который сообщает о дефекте после проверки того, получена ли блокировка (s==locked). Тест является частью подпрограммы, выполняемой по завершении основной программы отправки. Из этих сведений можно определить, что драйвер не смог освободить спин-блокировку перед возвратом из подпрограммы отправки.
Закройте средство просмотра дефектов статического драйвера
После выявления ошибки кода, вызвавшей дефект, можно закрыть окно Просмотрщика дефектов статической проверки драйверов для текущего правила, а затем открыть Просмотрщик дефектов для другого правила.
Чтобы закрыть средство просмотра дефектов для правила, выполните следующие действия.
- Из меню файла выберите пункт Выйти.
Также можно нажать кнопку "Закрыть" (X) в средстве просмотра дефектов. Он находится непосредственно под кнопкой "Закрыть " (X) для отчета о проверке статического драйвера.
На следующем снимке экрана показано, как закрыть средство просмотра дефектов.