Используйте сообщения о несоответствии, появляющиеся в средстве просмотра замены кода, для анализа и исправления промахов замены кода.
Средство просмотра замены кода отображает сообщения о несоответствии в информации трассировки для ошибок замены кода. Легенда со списком каждого сообщения, которое появляется в отчете о промахах, предшествует подробным данным отчета. Сообщение состоит из:
Числовой идентификатор, определяющий сообщение в подробных данных отчета.
Текст сообщения, который в некоторых случаях включает местозаполнители для имен аргументов, значений объектов сайта вызова, значений записей таблицы и имен свойств.
Например:
1. Mismatched data types (argument name, CSO value, table entry value)
Данные в скобках представляют собой местозаполнители фактических значений, отображаемых в подробных данных отчета.
В таблице Местоположения источников ошибок (Miss Source Locations) в столбце Причина (Reason) содержатся следующие сведения.
Идентификатор сообщения, указанный в условных обозначениях.
Значения местозаполнителя для этого экземпляра сообщения о несоответствии.
Следующие сведения о причине указывают на несоответствие типов данных, поскольку объект сайта вызова указывает тип данных int8 для аргументов y1, u1, и u2, в то время как запись таблицы замены кода указывает uint32.
1. y1, int8, uint32 u1, int8, uint32 u2, int8, uint32
В зависимости от ситуации и сообщенной причины промаха устраните выявленные промахи путем поиска следующих примеров:
Опечатка в определении записи таблицы замены кода или в параметре источника.
Отсутствует информация в записи таблицы замены кода или в параметре источника.
Недопустимые или неправильные сведения в определении записи таблицы замены кода или параметре источника.
Аргументы неправильно упорядочены в определении записи таблицы замены кода или источника, заменяемого кодом замены.
Сбой классификации алгоритма для операции сложения или вычитания из-за:
Идеальный аккумулятор не вычисляется, поскольку тип входного аргумента не является фиксированной точкой или коэффициенты регулировки наклона входных аргументов не равны.
Входные или выходные слепки с отливкой с плавающей запятой.
Входные или выходные отливки с литыми типами, имеющими различные коэффициенты регулировки наклона или смещения.
Выходные слепки не могут быть преобразованы в один выходной литок.
Входные слепки, приводящие к потере битов.
В следующем примере показано, как использовать данные трассировки средства просмотра замены кода для устранения ошибок замены кода. Необходимо просмотреть и протестировать замены кода для кода MATLAB ®.
Просмотрите код, созданный для определенного элемента кода, и найдите ожидаемую замену кода. Повторно создайте или снова откройте отчет о создании кода для кода MATLAB. Если уже создан отчет о создании кода, включающий отчет о замене кода для , откройте файл matlabroot/toolbox/rtw/rtwdemos/crl_demo/addsub_two_int16.mcodegen/lib/addsub_two_int16/html/mldatx.html. Сведения о регенерации отчета см. в разделе Проверка библиотеки замены кода.
Для проверки кода, созданного для функции, из отчета о создании кода откройте созданный файл. addsub_two_int16.h.
extern void addsub_two_int16(double u1, double u2, short *b_y1, short *y2);
Генератор кода заменил код, но заменяет подписанную версию 16-битных операций сложения и вычитания. Ожидалась замена кода для операций с неподписанными данными.
Откройте отчет о замене кода для кода MATLAB.
Щелкните ссылку, чтобы открыть средство просмотра замены кода.
На левой панели программы просмотра выберите таблицу замены кода. В этом примере выберите таблицу замены кода crl_table_addsub.
В средней области выберите запись таблицы RTW_OP_ADD с функцией реализации u16_add_u16_u16.
На правой панели выберите вкладку Информация о трассировке (Trace Information).
Информация о трассировке (Trace Information) - это таблица, в которой перечислены следующие сведения для каждого промаха:
Вызвать предварительный просмотр объекта сайта. Объект сайта вызова является концептуальным представлением оператора сложения. Генератор кода использует этот объект для запроса библиотеки замены кода на соответствие.
Ссылка на местоположение источника в функции MATLAB, где генератор кода рассматривал возможность замены кода.
Причины того, что промах произошел. См. раздел Сообщения о Мисс Причина.
В этом примере отчет показывает промахи для функции addsub_two_int16.m.
Найдите источник в информации трассировки. В зависимости от ситуации и сообщенной причины промаха, попробуйте найти условие, например опечатку в определении записи таблицы замены кода или настройку исходного параметра. Список условий см. в разделе Сообщения о Мисс Причина.
Для этого примера определите, почему код для функции addsub_two_int16 не заменяется кодом для неподписанной 16-битной операции сложения. Причины пропуска функции указывают на несоответствие типов данных и алгоритмов:
Тип данных в объекте сайта вызовов - это 16-разрядное целое число со знаком. Запись замены кода указывает беззнаковое 16-битное целое число.
Свойство алгоритма в объекте сайта вызова RTW_CAST_AFTER_OP в то время как запись замены кода указывает RTW_CAST_BEFORE_OP.
Исправьте указанный код MATLAB и соответствующие спецификации или запись таблицы замены кода. Если проблема связана с кодом MATLAB, используйте расположение источника в информации трассировки, чтобы найти код для исправления. В этом примере ожидалась операция добавления без подписи для addsub_two_int16 функция.
Для устранения несоответствий в тестовом файле addsub_to_int16_test, изменить определения типов данных для u1 и u2 следующим образом:
u1 = uint16(10) u2 = uint16(10)
В приложении MATLAB Coder™:
Откройте проект, содержащий addsub_to_int16 функция.
Использовать обновленный тестовый файл addsub_to_int16_test для автоматического переопределения типов ввода.
Измените настройку алгоритма сложения и вычитания. Открыть библиотеку замены кода crl_table_addsub. Изменение значения параметра Algorithm с Cast before operation (RTW_CAST_BEFORE_OPКому Cast after operation (RTW_CAST_AFTER_OP).
Регенерация кода и отчета.
В окне Отчет о замене кода откройте средство просмотра замены кода. Используйте данные трассировки средства просмотра замены кода для проверки того, что запись в таблице замены кода или кода MATLAB исправляет проблему замены кода. Информация трассировки показывает попадание для функции addsub_two_int16.