Обнаружение ошибок проектирования в пользовательском коде 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. После завершения анализа окно Сводных данных результатов указывает, что одна цель фальсифицирована.

Шаг 3: Обзор результатов анализа

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

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

Чтобы просмотреть отчет HTML, на вкладке Design Verifier нажмите HTML Report. В разделе Поиск Ошибок Проектирования Targets Status в отчете описывается сфальсифицированная цель.

Шаг 4: Исправьте ошибки проектирования

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

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

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

close_system('sldvexCustomCodeErrorDetectionExample', 0);

Похожие темы