Проверьте заменяющую библиотеку кода

Проверьте свою заменяющую библиотеку кода путем исследования ее структуры, замены и производительности. Используйте Заменяющее Средство просмотра Кода (crviewer), чтобы проверить структуру вашей библиотеки. Используйте заменяющий отчет кода проверить замены, сделанные с вашей библиотекой в сгенерированном коде. Используйте crviewer снова, чтобы проверить, что производительность вашей библиотеки во время генерации кода путем исследования замены как попало регистрирует.

Проверьте структуру библиотеки

Используйте Заменяющее Средство просмотра Кода (crviewer), чтобы открыть и просмотреть структуру вашей заменяющей библиотеки кода путем исследования ее таблиц и записей таблицы.

  1. Из командной строки MATLAB откройте свою заменяющую библиотеку кода с помощью crviewer с командой:

    >> crviewer('library')
  2. Средство просмотра открывает вашу заменяющую библиотеку кода и показывает ее заменяющие таблицы кода на левой панели. Проверьте, что ваша библиотека перечисляет все необходимые таблицы в правильном относительном порядке.

  3. Откройте и просмотрите записи для каждой заменяющей таблицы кода. В crtool кликните по каждой таблице, перечисленной на левой панели, чтобы просмотреть ее записи в средней панели.

    Если вы не используете crviewer, можно открыть каждую таблицу непосредственно из командной строки MATLAB с командой:

    crviewer(table)

  4. Для каждой таблицы в вашей библиотеке проверьте, что это перечисляет все необходимые записи в правильном относительном порядке. Проверьте, что концептуальное представление и представление реализации правильны для каждой записи в таблице.

Проверьте замену библиотеки

Используйте Заменяющий Отчет Кода проверить, что, когда генератор кода пользуется вашей заменяющей библиотекой кода, это создает замены как ожидалось в сгенерированном коде. Для каждого экземпляра замены Заменяющий Отчет Кода обеспечивает отображение между блоком Simulink, который инициировал замену и ее реализацию в сгенерированном коде. Используйте это отображение, чтобы проверить правильную замену кода путем трассировки между отчетом и кодом или в направлении (от отчета до кода или в коде, чтобы сообщить).

Сгенерировать Заменяющий Отчет Кода:

  1. Сконфигурируйте свою модель, чтобы пользоваться вашей заменяющей библиотекой кода.

  2. Сконфигурируйте свою модель, чтобы открыть Отчет Генерации кода. Заменяющий Отчет Кода является вкладкой в рамках этого отчета. В диалоговом окне Model Configuration Parameters, в Code Generation> панель Report, выберите:

    • Create code generation report

    • Open report automatically

    • Model-to-code

    • Summarize which block triggered code replacements

  3. Сконфигурируйте сгенерированный код, чтобы включать комментарии. В диалоговом окне Model Configuration Parameters, в Code Generation> панель Comments, выберите:

    • Include comments

    • Или или оба из Simulink block comments и Simulink block descriptions

  4. Создайте свою модель, чтобы сгенерировать код только. Отчет Генерации кода открывается автоматически. На левой панели щелкните, чтобы открыть Заменяющий Отчет Кода.

  5. Проверьте, что замены кода происходят как ожидалось.

    • Navigate from report to model: В Заменяющем Отчете Кода щелкните по каждой ссылке блока, чтобы видеть источник, который инициировал замену.

    • Navigate from model to report: В окне модели Simulink используйте выделение модели к коду, чтобы проследить замены кода. Щелкните правой кнопкой по блокам, где вы ожидали, что замена кода произойдет и выберет C/C++ Code> Navigate to C/C++ Code. Отчет появляется с соответствующим заменяющим подсвеченным кодом.

Проверьте производительность библиотеки

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

Чтобы рассмотреть трассировочную информацию от данных кэша удачи и неудачи, используйте Заменяющее Средство просмотра Кода (crviewer). Из кэша хита можно идентифицировать, когда замена кода успешно произошла, и из кэша мисс, можно диагностировать, когда замена кода не произошла. Трассировочная информация кэша мисс предоставляет вам информацию о причине для мисс, ссылки на соответствующее исходное местоположение для мисс и объекта сайта вызова мисс. Для получения дополнительной информации смотрите, что Замена Поиска и устранения неисправностей Кода отсутствует.

Рассмотрите замены кода

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

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

Следующий пример иллюстрирует два дополнительных подхода для рассмотрения замен кода:

  • Проверяйте раздел Code Replacements Report отчета генерации кода для ожидаемых замен.

  • Проследите замены кода.

  1. Идентифицируйте функцию MATLAB, где вы ожидаете, что замена функции или оператора происходит. Этот пример использует функциональный matlabroot/toolbox/rtw/rtwdemos/crl_demo/addsub_two_int16.m.

    function [y1, y2] = addsub_two_int16(u1, u2)
    
    y1 = int16(u1 + u2);
    y2 = int16(u1 - u2);
  2. Идентифицируйте или создайте код или скрипт, чтобы осуществить функцию. Например, считайте тестовый файл addsub_to_int16_test.m, который включает следующий код:

    disp('Input')
    u1 = int16(10)
    u2 = int16(10)
    
    [y1, y2] = addsub_two_int16(u1, u2);
    
    disp('Output')
    disp('y1 =')
    disp(y1);
    disp('y2 =')
    disp(y2);
  3. Откройте приложение MATLAB Coder™.

  4. На странице Select Source Files добавьте свою функцию в проект. В данном примере добавьте функциональный addsub_two_int16. Нажмите Next.

  5. На странице Define Input Types используйте тестовый файл addsub_to_int16_test автоматически задавать входные типы. Нажмите Next.

  6. На странице Check for Run-Time Issues задайте тестовый файл addsub_to_int16_test. Выполнение приложения тестовый файл, заменяя вызовы addsub_to_int16_test с вызовами версии MEX addsub_to_int16_test. Нажмите Next.

  7. Чтобы открыть диалоговое окно Generate, на странице Generate Code, кликают по стреле Generate.

  8. Установите Build type генерировать исходный код. Прежде чем вы создадите исполняемый файл, вы хотите рассмотреть свои замены кода в сгенерированном коде.

  9. В диалоговом окне Generate нажмите More Settings.

  10. Сконфигурируйте генератор кода, чтобы пользоваться вашей заменяющей библиотекой кода. На вкладке Custom Code, установленной параметр Code replacement library на имя вашей библиотеки. В данном примере установите библиотеку на Addition & Subtraction Examples.

  11. Сконфигурируйте отчет генерации кода включать Заменяющий Отчет Кода. На вкладке Debugging выберите:

    • Always create a code generation report

    • Code replacements

    • Automatically launch a report if one is generated

  12. Чтобы сгенерировать код и отчет, установите Build type на Source Code. Затем нажмите Generate.

  13. Откройте раздел Code Replacements Report отчета генерации кода.

    Тот отчет перечисляет заменяющие функции, которые использовал генератор кода. Отчет обеспечивает отображение между каждым заменяющим экземпляром и кодом MATLAB, который инициировал замену.

    Рассмотрите отчет:

    • Проверяйте, произошли ли ожидаемая функция и замены оператора кода.

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

Если функция или оператор не заменяются как ожидалось, генератор кода использовал более высокий приоритет (значение более низкого приоритета) совпадают или не нашел соответствие.

Чтобы анализировать и диагностировать замену кода промахи, используйте трассировочную информацию, которую обеспечивает Code Replacement Viewer.

Похожие темы