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
журнал
имя файла анализируемого файла 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 могут упростить процесс обнаружения дефектного кода.