Обнаружьте из связанных ошибок доступа к массиву

Поиск ошибок проектирования для из связанного доступа к массиву

Анализ поиска ошибок проектирования Simulink® Design Verifier™ обнаруживает из связанных ошибок доступа к массиву в вашей модели. В симуляции, когда ваша модель пытается получить доступ к элементу массива с помощью недопустимого индекса, из связанной ошибки доступа к массиву, происходит.

Обнаружить из связанных ошибок доступа к массиву в вашей модели:

  1. В Редакторе Simulink выберите Analysis> Design Verifier> Options.

    Диалоговое окно Configuration Parameters открывается к панели Design Verifier.

  2. Под Analysis options, из списка Mode, выбирают Design error detection.

  3. В дереве Select, под Design Verifier, выбирают Design Error Detection.

  4. Выберите Out of bound array access.

  5. Нажмите OK.

  6. В Редакторе Simulink выберите Analysis> Design Verifier> Detect Design Errors> Model.

    Логарифмическое окно Simulink Design Verifier открывается, показывая прогресс анализа.

    Когда анализ завершен:

    • Программное обеспечение подсвечивает модель с результатами анализа.

    • Диалоговое окно Simulink Design Verifier Results открывает и отображается аналитические сводные данные.

Обнаружьте из связанного доступа к массиву в модели в качестве примера

Этот пример показывает, как обнаружить из связанных ошибок доступа к массиву в модели sldvdemo_array_bounds в качестве примера.

  1. В командной строке MATLAB® введите:

    sldvdemo_array_bounds

    Модель в качестве примера открывается.

    Используя значения входного сигнала, блок MATLAB function ComputeIndex определяет область значений индексов с минимальным minIdx и максимальным maxIdx. ArrayOp_Matlab, ArrayOp_MAL и блоки ArrayOp_SF используют набор целочисленных индексов между minIdx и maxIdx, чтобы получить доступ к элементам массива и выполнить операции над массивами.

    В этой модели в качестве примера аналитические опции сконфигурированы для из связанного выявления ошибок доступа к массиву. Чтобы просмотреть эти опции, дважды кликните кнопку View Simulink Design Verifier Options.

  2. Запустите анализ поиска ошибок проектирования путем двойного клика по кнопке Run Simulink Design Verifier.

    Логарифмическое окно Simulink Design Verifier открывается, отображая прогресс анализа.

    Когда анализ завершен, модель в качестве примера подсвечена с результатами анализа.

  3. Просмотрите результаты анализа в графике путем двойного клика по блоку ArrayOp_SF Chart, подсвеченному в красном.

  4. Смотрите результаты детального анализа для Различного состояния в окне Simulink Design Verifier Results путем выбора Различного состояния. То состояние подсвечено в красном.

    Simulink Design Verifier обнаружил индекс из связанных ошибок для массива u в Различном состоянии.

  5. Щелкните по первой ссылке View test case.

    Simulink Design Verifier создает и открывает модель тестовой обвязки, которая содержит тесты или группы входного сигнала, которые демонстрируют из связанных ошибок доступа к массиву.

  6. В диалоговом окне Signal Builder нажмите Start simulation, чтобы моделировать модель тестовой обвязки с Тестом 1.

    Остановки симуляции прежде, чем ввести состояние, Различное Stateflow® Debugger, открываются. Следующую ошибку показывают:

    Runtime error: Index into array out of range
    Model Name: sldvdemo_array_bounds_harness
    Block Name: sldvdemo_array_bounds_harness/...
    		Test Unit (copied from sldvdemo_array_bounds)/ArrayOp_SF
    Attempted to access 4 element of data u(#188 (0:3:0))...
    		The valid index range is 0 to 3

    Сохраните Отладчик Stateflow открытым в этой точке останова.

  7. В модели sldvdemo_array_bounds_harness держите свой курсор над Различным состоянием, чтобы видеть значения данных в этой точке останова симуляции.

    Используя Тест 1 значение входного сигнала, блок MATLAB function ComputeIndex определяет область значений индексов массива, чтобы быть 1:4. Индексация на основе одна сопоставима с синтаксисом MATLAB, таким образом, эти индексы допустимы для блока MATLAB function ArrayOp_Matlab и диаграммы Stateflow ArrayOp_MAL.

    Диаграмма Stateflow ArrayOp_SF использует C в качестве языка действия, который не поддерживает индексацию на основе одну. 1:4 не является допустимой индексной областью значений для доступа к массиву в том графике. Допустимой индексной областью значений для доступа к массиву в том графике является 0:3 как сообщение об ошибке, о котором сообщают. Когда или maxIdx или minIdx оценивают к 4, из связанной ошибки доступа к массиву происходит в блоке ArrayOp_SF Chart.

    Для получения дополнительной информации об основанной на нуле поддержке индексации смотрите Различия Между MATLAB и C как Синтаксис языка Действия (Stateflow).

Ограничения поддержки из связанного поиска ошибок проектирования доступа к массиву

Индексные значения Inf

Поиск ошибок проектирования не поддерживает индексацию Inf. Если ваша модель пытается получить доступ к массиву с помощью индексного значения, которое оценивает к Inf, поиск ошибок проектирования не сообщает из связанной ошибки доступа к массиву, но в симуляции, из связанной ошибки доступа к массиву происходит.

Индексируйте векторный блок со скалярным вводом данных

Из связанного доступа к массиву поиск ошибок проектирования не поддерживает Индексные блоки Вектора со скалярными вводами данных. Если ваша модель включает блок Index Vector, который задает скалярный ввод данных вместо векторного ввода данных, и вход управления вызывает за пределы доступ к массиву, поиск ошибок проектирования не сообщает об ошибке, но ошибка происходит в симуляции.

Похожие темы