Трассировка кода (прослеживаемость) использует гиперссылки для навигации между строкой сгенерированного кода и его соответствующими элементами в модели. Чтобы найти строки кода и соответствующие им элементы, можно также щелкнуть правой кнопкой мыши элемент или элементы в модели. Эта двусторонняя навигация - двунаправленная прослеживаемость.
С помощью трассировки кода можно:
Убедитесь, что созданный код соответствует ожидаемому. Можно определить, какие элементы модели соответствуют строке кода. Можно отслеживать код из различных элементов, которые были проверены или не проверены.
Убедитесь, что созданный код соответствует требованиям проекта. Можно связать требования с элементом модели и использовать трассировку кода для проверки соответствия созданного кода элементу модели назначенным требованиям.
При создании кода из модели Simulink ® информация об отслеживаемости встраивается в созданный код, если она явно не указана. Информация об отслеживании включает в себя связи для отслеживания между сгенерированным исходным кодом и моделью. Сгенерированный код можно просмотреть, выполнив следующие действия:
Просмотр кода: просмотр созданного кода в представлении «Код» ракурса «Код».
Отчет о создании кода: просмотр созданного кода в веб-браузере MATLAB ® в виде HTML-отчета.
Созданный код включает ресурсы, поддерживающие трассировку кода:
Гиперссылки элементов кода (обозначаемые подчеркиванием при наведении курсора на код) для следовых переменных или типов в созданном коде к их объявлениям или определениям в файлах заголовков.
Теги в комментариях кода, которые идентифицируют элементы в модели, из которых создаются строки кода.
Гиперссылки номеров строк, связанные с компонентом модели, из которого была создана строка кода.
Двунаправленная прослеживаемость поддерживается для блоков Simulink и следующих элементов Stateflow ®:
Государства
Переходы
Таблицы переходов состояний
Функции MATLAB. Отслеживание не поддерживается для внешнего кода, вызываемого из функции MATLAB.
Блоки таблицы истинности
Графические функции
Функции симулятора
Отслеживание в одном направлении поддерживается для следующих элементов Stateflow:
События (код-модель)
Отслеживание кода к модели работает для явных событий, но не неявных событий. Если щелкнуть гиперссылку на явное событие в созданном коде, этот элемент подсвечивается на панели Содержимое (Contents) обозревателя моделей.
Соединения (модель-код)
Прослеживаемость «модель-код» работает для соединений по крайней мере с одним исходящим переходом. При щелчке правой кнопкой мыши на таком соединении в редакторе Stateflow Editor выделяется строка кода, соответствующая первому исходящему переходу для этого соединения.
Дополнительные сведения см. в разделе Элементы Trace Stateflow в сгенерированном коде.
Функциональные блоки MATLAB, вставляемые непосредственно в модель Simulink, также можно отслеживать. Дополнительные сведения см. в разделе Использование отслеживания в функциональных блоках MATLAB.
Открытие модели rtwdemo_comments.
Откройте приложение Embedded Coder ®. Создайте модель. На вкладке C Code нажмите кнопку Build.
По умолчанию открывается отчет о создании кода HTML. Сведения об использовании отчета см. в разделе Отчет по созданию кода.
Просмотрите созданный код в представлении «Код» в ракурсе «Код».
Переключитесь между созданными исходными файлами с помощью раскрывающегося списка в верхней части представления «Код».
Исходный код содержит информацию об отслеживании, такую как комментарии с гиперссылками, номера строк, переменные и операторы. Наведите курсор или щелкните гиперссылку на комментарий или номер строки. Редактор Simulink выделяет соответствующий блок или блоки в модели.

Чтобы выделить созданный код для блока в модели, выберите блок. Созданный код блока подсвечивается в представлении «Код».
Чтобы открыть созданный код для ссылочной модели, откройте ссылочную модель и просмотрите созданный код в представлении «Код».
Открытие модели rtwdemo_comments.
Откройте приложение Embedded Coder. На вкладке C Code щелкните Settings, чтобы открыть диалоговое окно Configuration Parameters. Выберите Создать отчет о создании кода, если он еще не выбран. По умолчанию автоматически Открыть отчет (Open report), выбрать Код к модели (Code-to-model) и Модель к коду (Model-to-code).
Если модель содержит ссылочные модели и требуется включить возможность отслеживания для отчета о создании кода ссылочной модели, повторите предыдущий шаг для каждой ссылочной модели.
Создайте модель. На вкладке Код C (C Code) щелкните Сборка (Build). Процесс построения открывает отчет о создании кода в веб-браузере MATLAB.
На левой панели навигации выберите файл исходного кода. Исходный код и номера строк на правой панели содержат гиперссылки на блоки в модели.
Щелкните гиперссылку на комментарий или номер строки. Редактор Simulink отображает и подсвечивает соответствующий блок или блоки в модели.

Чтобы выделить созданный код для блока в модели, щелкните правой кнопкой мыши блок и выберите «Код C/C + +» > «Перейти к коду C/C + +». Сгенерированный код для блока затем выделяется в отчете о создании кода HTML. Чтобы выделить созданный код для нескольких выбранных блоков, удерживайте клавишу SHIFT, выберите несколько блоков, а затем щелкните правой кнопкой мыши любой блок, чтобы выбрать C/C + + Code > Перейти к C/C + + Code. Созданный код для блоков затем выделяется в отчете о создании кода HTML.
Если в модели имеется ссылочная модель, на левой панели навигации в разделе Ссылочные модели (Reference Models) щелкните ссылку на ссылочную модель. Отчет о создании кода для ссылочной модели теперь отображается в веб-браузере MATLAB.
В левой области навигации можно нажать кнопку «Назад» для возврата к предыдущему отчету о создании кода.
Тег отслеживания появляется в комментарии над соответствующей строкой сгенерированного кода. Формат тега: <.system>/block_name
является одним из следующих:system
Текст Root
Уникальный номер системы, присвоенный механизмом Simulink
- имя исходного блока.block_name
Генератор кода документирует теги для модели в разделе комментариев созданного файла заголовка. . Например, этот комментарий появляется в файле заголовка модели, model.hfoo, которая имеет подсистему 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 папка.