tlcdebug
выполняет учебный обзорObjective: Учится использовать статистику покрытия TLC, чтобы помочь идентифицировать ошибки в коде TLC.
Folder: (открытый)
matlabroot/toolbox/rtw/rtwdemos/tlctutorial/tlcdebug
Этот пример учит вас, как определить, выполняется ли ваш код TLC как ожидалось. Здесь это использует ту же модель что касается предыдущего примера. Когда вы фокусируетесь на понимании потока управления в обработке файлов TLC, вы не должны скомпилировать и выполнить автономную модель, только чтобы посмотреть на код. Пример продолжает можно следующим образом:
Начало работы Почему и как анализировать покрытие TLC
Open the Model and Generate Code — Считайте файл журнала покрытия
Code Generation> панель Debug предоставляет возможность Start TLC coverage when generating code. Выбор его приводит к листингу, что документы, сколько раз каждая строка в вашем исходном файле 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.
В Code Generation> панель Debug диалогового окна Configuration Parameters, выберите Start TLC coverage when generating code. (Не выбирайте Start TLC debugger when generating code. Вызов отладчика является ненужным.) Нажимают Apply.
Нажмите 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 могут упростить процесс обнаружения дефектного кода.