Обнаружьте Ошибки проектирования в Пользовательском коде C/C++

Чтобы обнаружить деление на нуль и из связанных ошибок доступа к массиву в модели с пользовательским кодом C/C++ в блоках модели или графиками Stateflow®, используйте анализ поиска ошибок проектирования. Simulink Design Verifier идентифицирует код, который приводит к ошибкам и затем или доказывает, что ошибки допустимы, или генерирует тесты, которые реплицируют ошибку.

В этом примере показано, как обнаружить ошибки деления на нуль в модели, которая состоит из кода C/C++ в графике Stateflow®.

Шаг 1: откройте модель

Модель sldvexCustomCodeErrorDetectionExample в качестве примера содержит график Stateflow®, который вызывает пользовательский код C/C++, который использует шины ввода и вывода.

open_system('sldvexCustomCodeErrorDetectionExample');

Шаг 2: выполните анализ поиска ошибок проектирования

Чтобы выполнить анализ поиска ошибок проектирования, на вкладке Design Verifier, нажимают Detect Design Errors. После того, как анализ завершается, окно Results Summary указывает, что одна цель сфальсифицирована.

Шаг 3: рассмотрите результаты анализа

На вкладке Design Verifier, в разделе Review Results, нажимают Highlight in Model. Чтобы просмотреть цели ошибки времени выполнения C/C++, которые привели к ошибке, нажмите на Редактор Simulink®. Окно Results Inspector отображает цели деления на нуль.

Примечание: Когда вы нажимаете тест View для Ошибки - цель симуляции потребностей, Simulink® Design Verifier™ отображает тест, который реплицирует ошибку. Если вы симулируете тест, MATLAB® может отказать во время анализа пользовательского кода.

Чтобы просмотреть отчет HTML, на вкладке Design Verifier, нажимают HTML Report. Раздел Design Error Detection Objectives Status в отчете описывает сфальсифицированную цель.

Шаг 4: зафиксируйте ошибки проектирования

В модели в качестве примера щелкните правой кнопкой по блоку Saturation, который отображается серым и Некомментарий блок. Повторно анализируйте модель путем нажатия на Detect Design Errors. Результаты показывают, что цель времени выполнения C/C++ допустима.

Шаг 5: Очистка

Чтобы завершить пример, закройте модель.

close_system('sldvexCustomCodeErrorDetectionExample', 0);

Похожие темы