Замена поиска и устранения неисправностей кода отсутствует

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

Сообщения мисс Рисон

Заменяющее Средство просмотра Кода отображает причину мисс сообщения в трассировочной информации для замены кода промахи. Легенда, перечисляющая каждое сообщение, которое появляется в отчете мисс, предшествует деталям отчета. Сообщение состоит из:

  • Числовой идентификатор, который идентифицирует сообщение в деталях отчета.

  • Текст сообщения, который в некоторых случаях включает заполнителей для имен аргументов, вызывает значения объекта сайта, значения записи таблицы и имена свойства.

Например:

1. Mismatched data types (argument name, CSO value, table entry value)

Вводная информация представляет заполнителей для фактических значений, которые появляются в деталях отчета.

В таблице Miss Source Locations, которая перечисляет детали мисс, столбец Reason включает:

  • Идентификатор сообщения, как перечислено в легенде.

  • Значения заполнителя для того экземпляра мисс обосновывают сообщение.

Следующие детали Reason указывают на неверный тип данных, потому что объект сайта вызова задает тип данных int8 для аргументов y1, u1, и u2, в то время как заменяющая запись таблицы кода задает uint32.

1. y1, int8, uint32
   u1, int8, uint32
   u2, int8, uint32

В зависимости от вашей ситуации и причины мисс, о которой сообщают, поиск и устранение неисправностей сообщил о промахах путем поиска экземпляров следующего:

  • Опечатка в заменяющем определении записи таблицы кода или исходной установке параметра.

  • Информация, отсутствующая в заменяющей записи таблицы кода или исходной установке параметра.

  • Недопустимая или неправильная информация в заменяющем определении записи таблицы кода или исходной установке параметра.

  • Аргументы неправильно упорядочены в заменяющем определении записи таблицы кода или источнике, заменяемом заменяющим кодом.

  • Не пройдено классификация алгоритмов для операции сложения или операции вычитания из-за:

    • Идеальный аккумулятор, не вычисляемый, потому что тип входного параметра не является фиксированной точкой или наклонными поправочными коэффициентами входных параметров, не равен.

    • Ввод или вывод бросает с типом броска с плавающей точкой.

    • Ввод или вывод бросает с типами броска, которые имеют различные наклонные поправочные коэффициенты или смещения.

    • Выведите броски, не являющиеся конвертируемым одному выходному броску.

    • Введите броски, приводящие к потере битов.

Анализируйте и откорректируйте замену кода, отсутствует

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

  1. Рассмотрите код, сгенерированный для определенного элемента кода, ища ожидаемую замену кода. Регенерируйте или вновь откройте отчет генерации кода для своего кода MATLAB. Если вы уже сгенерировали отчет генерации кода, который включает Заменяющий Отчет Кода для matlabroot/toolbox/rtw/rtwdemos/crl_demo/addsub_two_int16.m, откройте файл codegen/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-битного сложения и операций вычитания. Вы ожидали замены кода для операций на данных без знака.

  2. Откройте Заменяющий Отчет Кода для кода MATLAB.

  3. Щелкните по ссылке, чтобы открыть Заменяющее Средство просмотра Кода.

  4. На левой панели средства просмотра выберите свою заменяющую таблицу кода. В данном примере выберите заменяющую таблицу crl_table_addsub кода.

  5. В средней панели выберите запись таблицы RTW_OP_ADD с функцией реализации u16_add_u16_u16.

  6. На правой панели выберите вкладку Trace Information.

    Trace Information является таблицей, которая перечисляет следующую информацию для каждой мисс:

    • Вызовите просмотр объекта сайта. Объект сайта вызова является концептуальным представлением оператора сложения. Генератор кода использует этот объект запросить заменяющую библиотеку кода для соответствия.

    • Ссылка на исходное местоположение в функции MATLAB, где генератор кода, рассмотренный заменяющий код.

    • Причины, что мисс произошла. См. сообщения мисс Рисон.

    В данном примере отчет показывает промахам для функционального addsub_two_int16.m.

  7. Найдите источник в трассировочной информации. В зависимости от вашей ситуации и причины мисс, о которой сообщают, рассмотрите поиск условия, такого как опечатка в заменяющем определении записи таблицы кода или исходной установке параметра. Для списка условий рассмотреть, seeMiss Причина сообщения.

    В данном примере определите почему код для функции addsub_two_int16 не заменяется кодом для 16-битной операции сложения без знака. Мисс рассуждает для функции, указывают на тип данных и несоответствия алгоритма:

    • Тип данных в объекте сайта вызова является 16-битным целым числом со знаком. Заменяющая запись кода задает 16-битное целое число без знака.

    • Свойством алгоритма в объекте сайта вызова является RTW_CAST_AFTER_OP в то время как заменяющая запись кода задает RTW_CAST_BEFORE_OP.

  8. Зафиксируйте заданный код 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).

    • Регенерируйте код и отчет.

  9. Из Заменяющего Отчета Кода откройте Заменяющее Средство просмотра Кода. Используйте Заменяющую трассировочную информацию Средства просмотра Кода, чтобы проверить, что ваша заменяющая запись таблицы кода MATLAB или кода корректирует заменяющую проблему кода. Трассировочная информация показывает хит для функции addsub_two_int16.

Похожие темы