exponenta event banner

Устранение ошибок при замене кода

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

Сообщения о промахах

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

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

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

Например:

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

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

  • Опечатка в определении записи таблицы замены кода или в параметре источника.

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

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

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

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

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

    • Входные или выходные слепки с отливкой с плавающей запятой.

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

    • Выходные слепки не могут быть преобразованы в один выходной литок.

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

Анализ и исправление ошибок при замене кода

В следующем примере показано, как использовать данные трассировки средства просмотра замены кода для устранения ошибок замены кода. Необходимо просмотреть и протестировать замены кода для модели.

  1. Просмотрите код, созданный для элемента модели, и найдите ожидаемые замены кода. Для этого примера изучите код, созданный для Sub32 блоков в модели rtwdemo_crladdsub. Щелкните правой кнопкой мыши блок и выберите «Код C/C + +» > «Перейти к коду C/C + +».

    Отчет о создании кода откроется в расположении созданного кода для этого блока.

    Генератор кода заменил код, но замена была для подписанной версии 32-битной операции вычитания. Ожидалась неподписанная операция.

  2. Повторно создайте или снова откройте отчет о заменах кода для модели. Если уже создан отчет о создании кода, включающий отчет о замене кода для модели rtwdemo_crladdsub, откройте файл rtwdemo_crladdsub_ert_rtw/html/rtwdemo_crladdsub_codegen_rpt.html. Сведения о регенерации отчета см. в разделе Проверка библиотеки замены кода.

  3. Щелкните ссылку, чтобы открыть средство просмотра замены кода.

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

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

  6. На правой панели выберите вкладку Информация о трассировке (Trace Information).

    Информация о трассировке (Trace Information) - это таблица, в которой перечислены следующие сведения для каждого промаха:

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

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

    • Причины того, что промах произошел. Список причин, по которым возникают промахи, см. в разделе Сообщения с ошибками.

    В этом примере отчет показывает промахи для двух блоков: Sub32 и Sub8.

  7. Найдите этот источник в данных трассировки. В зависимости от ситуации и сообщенной причины промаха, попробуйте найти условие, например опечатку в определении записи таблицы замены кода или в настройке исходного параметра. Miss Reason Messages содержит список условий, которые необходимо учитывать.

    В этом примере определите, почему код для блока Sub32 не был заменен кодом для операции 32-разрядного вычитания без знака. Причина пропуска блока Sub32 указывает на несоответствие типов данных. Тип данных в объекте сайта вызова для трех аргументов - это 32-разрядное целое число со знаком. Запись замены кода указывает беззнаковое 32-разрядное целое число.

  8. Исправьте запись таблицы замены модели или кода. Если проблема возникает в модели, используйте ссылку исходного местоположения в информации трассировки, чтобы найти исправляемый элемент модели. В этом примере ожидалась операция вычитания без знака для блока Sub32. Щелкните ссылку в отчете трассировки для блока Sub32.

    Откроется модель с выделенным блоком Sub32.

    Измените настройку типа данных для двух входных сигналов и выходного сигнала для блока Sub32 на uint32.

  9. Регенерировать код. Используйте информацию трассировки средства просмотра замены кода, чтобы убедиться, что запись в таблице замены кода или модели исправляет проблему замены кода. На следующем экране информация трассировки показывает попадание для блока Sub32.

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