После того, как вы создадите или измените и укажете заменяющую таблицу кода, используйте следующие методы, чтобы исследовать и проверить таблицу и ее записи.
Вызовите табличный файл определения в командной строке.
Используйте Заменяющее Средство просмотра Кода, чтобы исследовать библиотеки, таблицы и записи.
Проследите замены кода из источника, где вы применили заменяющую библиотеку кода.
Исследуйте заменяющие удачи и неудачи кода, регистрируемые во время генерации кода.
Генератор кода регистрирует заменяющие записи таблицы кода, для которых он находит и не находит соответствия в кэше хита и пропускает кэш, соответственно. Когда заменяющее соответствие записи кода перестало работать, и код не заменяется, генератор кода регистрирует объект сайта вызова (CSO) для мисс в кэше мисс. Когда соответствие записи успешно выполняется, генератор кода регистрирует совпадающую запись в кэше хита.
Генератор кода перезаписывает данные кэша удачи и неудачи каждый раз, когда это производит код. Данные кэша отражают удачи и неудачи только для последнего компонента приложения (код MATLAB® или модель Simulink®), для которого вы генерируете код.
Можно использовать Заменяющее Средство просмотра Кода, чтобы рассмотреть трассировочную информацию на основе регистрируемых данных о трассировке удачи и неудачи. Кэш хита обеспечивает трассировочную информацию, которая помогает проверить замены кода.
Кэш мисс и связанные данные мисс, собранные и хранимые в заменяющих таблицах кода, предоставляют трассировочную информацию промахам. Используйте эту информацию для промахов, чтобы диагностировать ожидаемые замены кода, которые не происходят. Трассировочная информация для мисс:
Идентифицирует объект сайта вызова.
Обеспечивает ссылку на соответствующее исходное местоположение для мисс.
Включает информацию о причине для мисс.
После того, как вы создаете или изменяете заменяющий табличный файл определения кода, подтверждаете его. В командной строке задайте имя таблицы в вызове функции isvalid
. Например:
isvalid(crl_table_sinfcn)
ans = 1
MATLAB отображает ошибки, которые происходят. В следующем примере MATLAB обнаруживает опечатку в имени типа данных.
isvalid(crl_table_sinfcn)
??? RTW_CORE:tfl:TflTable: Unsupported data type, 'dooble'. Error in ==> crl_table_sinfcn at 7 hTable.registerCFunctionEntry(100, 1, 'sin', 'dooble', 'sin_dbl', ...
После того, как вы создадите или измените заменяющую библиотеку кода, используйте Code Replacement Viewer, чтобы рассмотреть и проверить список таблиц в библиотеке и записей в каждой таблице.
Откройте средство просмотра, чтобы отобразить содержимое вашей библиотеки. В командной строке введите следующую команду:
crviewer('library')
Например:
crviewer('Addition & Subtraction Examples')
Рассмотрите список таблиц на левой панели. Таблицы отсутствуют? Таблицы перечислены в правильном относительном порядке? По умолчанию средство просмотра отображает таблицы в поисковом порядке.
На левой панели кликните по каждой таблице и рассмотрите список записей в центральной панели. Записи отсутствуют? Список включает посторонние или неожиданные записи?
После того, как вы создадите или измените заменяющую таблицу кода, используйте Code Replacement Viewer, чтобы рассмотреть и проверить записи таблицы.
Откройте средство просмотра, чтобы отобразить содержимое вашей таблицы. В командной строке введите следующую команду. table
является файл MATLAB, который задает заменяющие таблицы кода. Файл должен быть в текущей папке или на пути MATLAB.
crviewer(table)
Например:
crviewer(crl_table_addsub)
Рассмотрите список записей в центральной панели. Записи отсутствуют? Список включает посторонние или неожиданные записи? По умолчанию средство просмотра отображает записи в поисковом порядке.
В центральной панели кликните по каждой записи и проверьте информацию о записи на правой панели.
Порядок аргументов правилен.
Концептуальные имена аргумента совпадают с соглашениями о присвоении имен генератора кода.
Имена аргумента реализации правильны.
Свойства алгоритма (например, насыщение и округление режима) установлены правильно.
Спецификация заголовка или исходного файла не отсутствует.
Типы ввода-вывода правильны.
Относительный приоритет записей правилен.
После того, как вы рассматриваете содержимое своей заменяющей библиотеки кода и таблиц, генерируете код и отчет генерации кода. Проверьте, что генератор кода заменяет код, как вы ожидаете.
Заменяющий Отчет Кода детализирует заменяющие библиотечные функции кода, которые генератор кода использует для замен кода. Отчет обеспечивает отображение между каждым заменяющим экземпляром и элементом модели, который инициировал замену.
Следующий пример иллюстрирует два дополнительных подхода к рассмотрению замен кода:
Проверяйте раздел Code Replacements Report отчета генерации кода для ожидаемых замен.
Проследите замены кода.
Для моделей, которые состоят из иерархий модели, повторите следующую процедуру каждой модели в иерархии. Сгенерируйте код для и рассмотрите трассировочную информацию каждой модели, на которую ссылаются, отдельно. Регистрируемая информация об удачном обращении в кэш и мисс, полученная в Заменяющем Средстве просмотра Кода, допустима для последней модели, для которой был сгенерирован код. Когда вы генерируете код для каждой модели в иерархии, перезаписи генератора кода регистрируемая информация.
Откройте модель, где вы ожидаете, что замена функции или оператора происходит. Этот пример использует модель
.rtwdemo_crladdsub
Сконфигурируйте генератор кода, чтобы пользоваться вашей заменяющей библиотекой кода. В данном примере установите библиотеку на Addition & Subtraction Examples
.
Сконфигурируйте отчет генерации кода включать Заменяющий Отчет Кода. На Code Generation> панель Report, выберите Create code generation report и Open report automatically. В разделе Advanced parameters выберите Model-to-code и Summarize which blocks triggered code replacements.
Сконфигурируйте комментарии для сгенерированного кода. На Code Generation> панель Comments, выберите:
Include comments
Или или оба из Simulink block comments и Simulink block descriptions
В Code Replacements Report эти опции включают информацию о блоке Simulink.
Сконфигурируйте генератор кода, чтобы сгенерировать только код. Прежде чем вы создадите исполняемый файл, рассмотрите ваши замены кода в сгенерированном коде.
Сгенерируйте код и отчет.
Откройте раздел Code Replacements Report отчета генерации кода.
Отчет перечисляет заменяющие функции, которые использовал генератор кода. Это обеспечивает отображение между каждым заменяющим экземпляром и блоком Simulink, который инициировал замену.
Рассмотрите отчет:
Проверяйте, произошли ли ожидаемая функция и замены оператора кода.
В заменяющих разделах щелкните по каждой ссылке блока, чтобы видеть источник, который инициировал замену кода, о которой сообщают.
В окне модели Simulink используйте выделение модели к коду, чтобы проследить замены кода. Идентифицируйте и щелкните правой кнопкой по блоку, где вы ожидали, что замена кода произойдет. Выберите C/C++ Code> Navigate to C/C++ Code. Отчет генерации кода появляется с соответствующим заменяющим подсвеченным кодом. В модели rtwdemo_crladdsub
в качестве примера щелкните правой кнопкой по блоку Add8 и выберите C/C++ Code> Navigate to C/C++ Code.
Осмотрите сгенерированный код, чтобы видеть, произошли ли функция или замена оператора, как вы ожидали.
Если функция или оператор не заменяются как ожидалось, генератор кода использовал более высокий приоритет (значение более низкого приоритета) совпадают или не нашел соответствие.
Чтобы анализировать и диагностировать замену кода промахи, используйте трассировочную информацию, которую обеспечивает Code Replacement Viewer. Смотрите, что Замена Поиска и устранения неисправностей Кода отсутствует.
Затем, разверните свою заменяющую библиотеку кода для других, чтобы использовать.