exponenta event banner

Проверка созданного кода с помощью трассировки кода

Трассировка кода (прослеживаемость) использует гиперссылки для навигации между строкой сгенерированного кода и его соответствующими элементами в модели. Чтобы найти строки кода и соответствующие им элементы, можно также щелкнуть правой кнопкой мыши элемент или элементы в модели. Эта двусторонняя навигация - двунаправленная прослеживаемость.

С помощью трассировки кода можно:

  • Убедитесь, что созданный код соответствует ожидаемому. Можно определить, какие элементы модели соответствуют строке кода. Можно отслеживать код из различных элементов, которые были проверены или не проверены.

  • Убедитесь, что созданный код соответствует требованиям проекта. Можно связать требования с элементом модели и использовать трассировку кода для проверки соответствия созданного кода элементу модели назначенным требованиям.

При создании кода из модели Simulink ® информация об отслеживаемости встраивается в созданный код, если она явно не указана. Информация об отслеживании включает в себя связи для отслеживания между сгенерированным исходным кодом и моделью. Сгенерированный код можно просмотреть, выполнив следующие действия:

Созданный код включает ресурсы, поддерживающие трассировку кода:

  • Гиперссылки элементов кода (обозначаемые подчеркиванием при наведении курсора на код) для следовых переменных или типов в созданном коде к их объявлениям или определениям в файлах заголовков.

  • Теги в комментариях кода, которые идентифицируют элементы в модели, из которых создаются строки кода.

  • Гиперссылки номеров строк, связанные с компонентом модели, из которого была создана строка кода.

Отслеживаемые элементы

Двунаправленная прослеживаемость поддерживается для блоков Simulink и следующих элементов Stateflow ®:

  • Государства

  • Переходы

  • Таблицы переходов состояний

  • Функции MATLAB. Отслеживание не поддерживается для внешнего кода, вызываемого из функции MATLAB.

  • Блоки таблицы истинности

  • Графические функции

  • Функции симулятора

Отслеживание в одном направлении поддерживается для следующих элементов Stateflow:

  • События (код-модель)

    Отслеживание кода к модели работает для явных событий, но не неявных событий. Если щелкнуть гиперссылку на явное событие в созданном коде, этот элемент подсвечивается на панели Содержимое (Contents) обозревателя моделей.

  • Соединения (модель-код)

    Прослеживаемость «модель-код» работает для соединений по крайней мере с одним исходящим переходом. При щелчке правой кнопкой мыши на таком соединении в редакторе Stateflow Editor выделяется строка кода, соответствующая первому исходящему переходу для этого соединения.

Дополнительные сведения см. в разделе Элементы Trace Stateflow в сгенерированном коде.

Функциональные блоки MATLAB, вставляемые непосредственно в модель Simulink, также можно отслеживать. Дополнительные сведения см. в разделе Использование отслеживания в функциональных блоках MATLAB.

Отслеживание в сгенерированном коде

Представление кода

  1. Открытие модели rtwdemo_comments.

  2. Откройте приложение Embedded Coder ®. Создайте модель. На вкладке C Code нажмите кнопку Build.

    По умолчанию открывается отчет о создании кода HTML. Сведения об использовании отчета см. в разделе Отчет по созданию кода.

  3. Просмотрите созданный код в представлении «Код» в ракурсе «Код».

  4. Переключитесь между созданными исходными файлами с помощью раскрывающегося списка в верхней части представления «Код».

  5. Исходный код содержит информацию об отслеживании, такую как комментарии с гиперссылками, номера строк, переменные и операторы. Наведите курсор или щелкните гиперссылку на комментарий или номер строки. Редактор Simulink выделяет соответствующий блок или блоки в модели.

    Code view is open next to the model. Cursor is placed over a comment and corresponding block is highlighted.

  6. Чтобы выделить созданный код для блока в модели, выберите блок. Созданный код блока подсвечивается в представлении «Код».

  7. Чтобы открыть созданный код для ссылочной модели, откройте ссылочную модель и просмотрите созданный код в представлении «Код».

Отчет о создании кода

  1. Открытие модели rtwdemo_comments.

  2. Откройте приложение Embedded Coder. На вкладке C Code щелкните Settings, чтобы открыть диалоговое окно Configuration Parameters. Выберите Создать отчет о создании кода, если он еще не выбран. По умолчанию автоматически Открыть отчет (Open report), выбрать Код к модели (Code-to-model) и Модель к коду (Model-to-code).

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

  4. Создайте модель. На вкладке Код C (C Code) щелкните Сборка (Build). Процесс построения открывает отчет о создании кода в веб-браузере MATLAB.

  5. На левой панели навигации выберите файл исходного кода. Исходный код и номера строк на правой панели содержат гиперссылки на блоки в модели.

  6. Щелкните гиперссылку на комментарий или номер строки. Редактор Simulink отображает и подсвечивает соответствующий блок или блоки в модели.

    Code generation report window containing model.c file is open. Mouse cursor is placed on a comment that contains a hyperlink to the corresponding block in the model.

  7. Чтобы выделить созданный код для блока в модели, щелкните правой кнопкой мыши блок и выберите «Код C/C + +» > «Перейти к коду C/C + +». Сгенерированный код для блока затем выделяется в отчете о создании кода HTML. Чтобы выделить созданный код для нескольких выбранных блоков, удерживайте клавишу SHIFT, выберите несколько блоков, а затем щелкните правой кнопкой мыши любой блок, чтобы выбрать C/C + + Code > Перейти к C/C + + Code. Созданный код для блоков затем выделяется в отчете о создании кода HTML.

  8. Если в модели имеется ссылочная модель, на левой панели навигации в разделе Ссылочные модели (Reference Models) щелкните ссылку на ссылочную модель. Отчет о создании кода для ссылочной модели теперь отображается в веб-браузере MATLAB.

  9. В левой области навигации можно нажать кнопку «Назад» для возврата к предыдущему отчету о создании кода.

Теги отслеживания

Тег отслеживания появляется в комментарии над соответствующей строкой сгенерированного кода. Формат тега: <system>/block_name.

  • system является одним из следующих:

    • Текст Root

    • Уникальный номер системы, присвоенный механизмом Simulink

  • block_name - имя исходного блока.

Генератор кода документирует теги для модели в разделе комментариев созданного файла заголовка. model.h. Например, этот комментарий появляется в файле заголовка модели, foo, которая имеет подсистему Outer и вложенную подсистему Inner:

/* Here is the system hierarchy for this model.
 *
 * <Root> : foo
 * <S1>   : foo/Outer
 * <S2>   : foo/Outer/Inner
 */

Этот код показывает комментарий тега над сгенерированной строкой кода. Блок усиления на корневом уровне исходной модели генерирует следующий код:

/* Gain: '<Root>/UnDeadGain1' */
rtb_UnDeadGain1_h = dead_gain_U.In1 *  dead_gain_P.UnDeadGain1_Gain;

Этот код показывает комментарий тега над сгенерированной строкой кода. Блок усиления в подсистеме на один уровень ниже корневого уровня исходной модели генерирует следующий код:

/* Gain: '<S1>/Gain' */
dead_gain_B.temp0 *= (dead_gain_P.s1_Gain_Gain);

Прослеживаемость оператора

Созданный код обеспечивает возможность отслеживания между операторами в созданных блоках кода и Simulink, элементах Stateflow или блоках MATLAB Function.

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

Эти операторы поддерживаются.

Тип оператораОператоры
Арифметика+, -, *, /, %
+=, -=, *=, /=, %=
++, -- (префикс и постфикс)
Логичный!, &&, ||
Относительный==, !=, <, >, <=, >=
Бит~, |, ^, &, >>, <<
&=, ^=, |=, <<=, >>=
Условный?:

Эти операторы не поддерживаются.

Тип оператораПримеры операторов
Оператор назначения=
Член операторов указателей иПодстрочный индекс массива: a[b]
Адрес отмены привязки указателя и указателя: &a, *a
Член: a.b, a->b
Другие операторыСкобка в вызове функции: foo(a,b)
Запятая: a, b
Разрешение области: a::b
Литые: type(a)
new, new[]
delete, delete[]

Ограничения отслеживания

Эти ограничения применяются к отчетам, создаваемым программным обеспечением Embedded Coder:

  • При следующих условиях прослеживаемость «модель-код» отключается для блока, если имя блока содержит:

    • Одна цитата (').

    • Звездочка (*), что вызывает неоднозначность имени относительно других имен в модели. Эта неоднозначность при обработке имени возникает, если в имени блока или в конце имени блока звездочка предшествует косой черте или следует за ней (/).

    • Характер ÿ (char(255)).

  • Если имя блока содержит символ новой строки (\n), сгенерированный комментарий кода для гиперссылки пути блока заменяет символ новой строки пробелом для читаемости.

  • Нельзя отслеживать блоки, представляющие следующие типы подсистем, в сгенерированном коде:

    • Виртуальные подсистемы

    • Маскированные подсистемы

    • Невиртуальные подсистемы, код которых был удален из-за оптимизации

    Если невозможно выполнить трассировку подсистемы на уровне подсистемы, можно выполнить трассировку отдельных блоков в подсистеме.

  • При открытии модели на платформе, отличной от платформы, используемой для создания кода, нельзя использовать отслеживание «модель-код» и «код-модель».

  • Встроенное отслеживание недоступно для файлов, созданных в shared_utils папка.

Связанные темы