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

Чтобы выполнить анализ обнаружения ошибок конструкции, на вкладке «Проверка конструкции» выберите «Обнаружение ошибок конструкции». После завершения анализа окно Сводка результатов (Results Summary) показывает, что одна цель сфальсифицирована.
На вкладке Проверка конструкции (Design Verifier) в разделе Результаты проверки (Review Results) щелкните Выделить в модели (Highlight in Model). Чтобы просмотреть цели ошибок времени выполнения C/C + +, которые привели к ошибке, щелкните редактор Simulink ®. В окне Инспектор результатов (Results Inspector) отображается деление на нулевые цели.

Примечание.При нажатии кнопки View test case для цели Error - needs simulation Simulink ® Design Verifier™ отображает тестовый случай, который воспроизводит ошибку. При моделировании тестового случая во время пользовательского анализа кода может произойти сбой MATLAB ®.
Чтобы просмотреть HTML-отчет, на вкладке Design Verifier щелкните HTML-отчет. В разделе Состояние целей обнаружения ошибок конструкции в отчете описывается сфальсифицированная цель.

В примере модели щелкните правой кнопкой мыши затемненный блок насыщения и раскомментируйте блок. Повторно проанализируйте модель, щелкнув Обнаружить ошибки конструкции (Detect Design Errors). Результаты показывают, что цель времени выполнения C/C + + действительна.
Чтобы завершить пример, закройте модель.
close_system('sldvexCustomCodeErrorDetectionExample', 0);