tlcdebug Обзор учебного пособия по выполнениюЦель: Научитесь использовать статистику покрытия TLC, чтобы помочь идентифицировать ошибки в коде TLC.
Папка:
(открыто)matlabroot/toolbox/rtw/rtwdemos/tlctutorial/tlcdebug
В этом учебном пособии описывается, как определить, выполняется ли код TLC в соответствии с ожиданиями. Здесь используется та же модель, что и в предыдущем учебном пособии. Поскольку основное внимание уделяется пониманию потока управления при обработке файлов TLC, нет необходимости компилировать и выполнять автономную модель только для просмотра кода. Учебник продолжается следующим образом:
Начало работы - причины и способы анализа покрытия TLC
Открытие модели и создание кода - чтение файла журнала покрытия
Панель «Создание кода» > «Отладка» предоставляет опцию «Начать покрытие TLC» при создании кода. Выбор этого параметра приводит к созданию списка, в котором указывается, сколько раз каждая строка исходного файла TLC выполнялась во время создания кода. Объявление о товаре, (где name.log является именем анализируемого файла TLC), помещается в папку сборки.name
Примечание
Файл журнала для каждого .tlc вызванный или включенный файл создается в папке построения. Сосредоточиться на timesN.log.
Копировать папку tlctutorial/tlcdebug/ в рабочую папку и cd к нему. Сделайте это, даже если вы уже скопировали его, чтобы убедиться, что у вас есть версия timesN.tlc у которого есть ошибка.
В окне команд MATLAB ® создайте файл MEX для S-функции.
mex timesN.c
Это позволяет избежать выбора версии, поставляемой с программным обеспечением Simulink ® .
Открытие модели simple_log.
На панели Создание кода (Code Generation) диалогового окна Параметры конфигурации (Configuration Parameters) установите флажок Только генерировать код (Generate code only).
На панели «Создание кода» > «Отладка» диалогового окна «Параметры конфигурации» выберите «Начать покрытие TLC при создании кода». (Не выбирайте «Запустить отладчик TLC» при создании кода. Вызов отладчика не требуется.) Нажмите кнопку «Применить».
Нажмите Ctrl + B. Обычные сообщения появляются в окне команд MATLAB и в папке сборки (simple_log_grt_rtw) создается в рабочей папке.
Введите папку построения. Найти файл timesN.logи скопируйте его в рабочую папку, переименовав в timesN_ilp.log для предотвращения перезаписи.
Открыть файл журнала timesN_ilp.log в вашем редакторе. Выглядит почти как timesN.tlc, за исключением числа, за которым следует двоеточие в начале каждой строки. Это число представляет количество выполнения TLC строки при генерации кода. Код для Outputs() должен выглядеть следующим образом:
0: %% Function: Outputs ========================================================
0: %%
1: %function Outputs(block, system) Output
1: %assign gain =SFcnParamSettings.myGain
1: /* %<Type> Block: %<Name> */
0: %%
1: /* Multiply input by %<gain> */
1: %assign rollVars = ["U", "Y"]
1: %roll idx = RollRegions, lcv = RollThreshold, block, "Roller", rollVars
1: %<LibBlockOutputSignal(0, "", lcv, idx)> = \
1: %<LibBlockInputSignal(0, "", lcv, idx)> * 1;
0: %endroll
1:
0: %endfunctionОбратите внимание, что комментарии не были выполнены. Были достигнуты TLC-операторы, что означает, что они выводят в сгенерированный C-код столько раз, сколько число, префиксированное к этим строкам.
Изменение параметров создания кода может вызвать скрытую проблему в сгенерированном исходном коде. Систематическое изменение опций и наблюдение за результирующими различиями в покрытии TLC может облегчить процесс обнаружения ошибочного кода.