Покрытие кода TLC, чтобы помочь отладке

tlcdebug Выполните учебный обзор

Objective: Учится использовать статистику покрытия TLC, чтобы помочь идентифицировать ошибки в коде TLC.

Folder: matlabroot/toolbox/rtw/rtwdemos/tlctutorial/tlcdebug открытый

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

  1. Начало работы Почему и как анализировать покрытие TLC

  2. Open the Model and Generate Code — Считайте файл журнала покрытия

Начало работы

Code Generation> панель Debug предоставляет возможность Start TLC coverage when generating code. Выбор его приводит к листингу, что документы, сколько раз каждая линия в вашем исходном файле TLC выполнялась во время генерации кода. Листинг, nameжурнал (где name имя файла анализируемого файла TLC), помещается в вашу папку сборки.

Примечание

Файл журнала для каждого .tlc файл, вызванный или включенный, сгенерирован в папке сборки. Фокусируйтесь на timesN.log.

Откройте модель и сгенерируйте код

  1. Скопируйте папку tlctutorial/tlcdebug/ к вашей рабочей папке и cd к нему. Сделайте это даже при том, что вы уже скопировали его, чтобы быть уверенными, что у вас есть версия timesN.tlc это имеет ошибку.

  2. В Командном окне MATLAB® создайте файл MEX для S-функции.

    mex timesN.c

    Это старается не брать версию, поставленную с вашим программным обеспечением Simulink®.

  3. Откройте модель simple_log.

  4. В панели Code Generation диалогового окна Configuration Parameters проверяйте Generate code only.

  5. В Code Generation> панель Debug диалогового окна Configuration Parameters, выберите Start TLC coverage when generating code. (Не выбирайте Start TLC debugger when generating code. Вызов отладчика является ненужным.) Нажимают Apply.

  6. Нажмите Ctrl+B. Обычные сообщения появляются в командном окне MATLAB и папке сборки (simple_log_grt_rtw) создается в вашей рабочей папке.

  7. Введите папку сборки. Найдите файл timesN.log, и скопируйте его в свою рабочую папку, переименовав его в timesN_ilp.log препятствовать тому, чтобы он был перезаписан.

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

Похожие темы